HDU 5358 First One( 2015 Multi-University Training Contest 六)
HDU 5358 First One( 2015 Multi-University Training Contest 6)
∑i=1n∑j=in(⌊log2S(i,j)⌋+1)×(i+j)
题意:给你一串序列。求出序列中所有的
题解:
1、首先把它展开。发现没啥用。
2、然后发现S(i,j)最大就是10的十次方。然后一旦log之后,最大就是34貌似。就枚举所有的log值,算出后面乘以多少。这里可以用一种全新的二分姿势。
枚举左端点。好了,现在左端点i固定了。比如从log[S[i,l] ] + 1经过log之后得到k,log[S[i,l+1] ]+ 1 得到的也是k……一直到log[S[i,r-1] ]+1 得到的才是k,然后log[S[i,r] ] + 1 得到的是k+1了。区间是前闭后开的。那么这一段的i和j的总和就是((i + l) + (i+l+1) + …… (i + r - 1) )那么一共有(r - l )个i+ 等差数列求和公式(a1+an) * n /2 等比数列求和公式:a1 * (1-q^n)/(1-q)
版权声明:本文为博主原创文章,未经博主允许不得转载。