题意 有一个整数数组 a 1 , a 2 , a 3 , . . . a n a_1,a_2,a_3,...a_n a1,a2,a3,...an,定义 S ( i , j ) = a i + a i + 1 + a i + 2 + . . . + a j S(i,j)=a_i+a_{i+1}+a_{i+2}+...+a_j S(i,j)=ai+ai+1+ai+2+...+aj 求 ∑ i = 1 n ∑ j = i n ( ⌊ l o g 2 S ( i , j ) ⌋ + 1 ) ∗ ( i + j ) \sum_{i=1}^n\sum_{j=i}^n(\lfloor log_2S(i,j)\rfloor+1)*(i+j) ∑i=1n∑j=in(⌊log2S(i,j)⌋+1)∗(i+j) 特别的 l o g 2 0 = 0 log_20=0 log20=0
思路 这个题有个小技巧, ⌊ l o g 2 N ⌋ + 1 \lfloor log_2N\rfloor+1 ⌊log2N⌋+1其实是N的二进制位数。就本题而言,S的最大值1e5*1e5=1e10,所以 ( ⌊ l o g 2 S ( i , j ) ⌋ + 1 (\lfloor log_2S(i,j)\rfloor+1 (⌊log2S(i,j)⌋+1 的值最大是34,我们可以先枚举位数,然后枚举i,最后用尺取的方法求得j的范围(l,r);