E. Mahmoud and Ehab and the xor-MST(结论&Xor)
结论题。
完全图边权为 u ⊕ v u\oplus v u⊕v ,求 M S T MST MST.
先 n = n − 1 n=n-1 n=n−1
答案是 ∑ i = 1 n l o w b i t ( i ) \sum\limits_{i=1}^{n} lowbit(i) i=1∑nlowbit(i)
因为 n n n很大,考虑按位计算贡献。
令 l o w b i t ( i ) = x lowbit(i)=x lowbit(i)=x的个数是: f ( x ) f(x) f(x)
则 a n s = ∑ i = 1 2 i ≤ n f ( 2 i ) × 2 i ans=\sum\limits_{i=1}^{2^i\le n} f(2^i) \times 2^i ans=i=1∑2i≤nf(2i)×2i
每位的贡献是: ( n − 2 i ) 2 i + 1 + 1 \dfrac{(n-2^i)}{2^{i+1}}+1 2i+1(n−2i)+1
这个手模一下就可以了。
时间复杂度: O ( l o g n ) O(logn) O(logn)
int main(){
ll n,s=0;scanf("%I64d",&n);n--;
for(ll i=1;i<=n;i<<=1)
s+=((n-i)/(i<<1)+1)*i;
printf("%I64d\n",s);
return 0;
}