cf959E

题意简述:一个包含n个点的完全图,点的编号从0开始,两个点之间的权值等于两个点编号的异或值,求这个图的最小生成树

规律是 ∑ i from 0 to n-1 (i&-i)

 

 

 

 

#include <iostream>
using namespace std;
int main()
{
    long long n,ans=0;
    scanf("%I64d",&n);
    n--;
    for (long long i=1;i<=n;i<<=1)
    ans+=((n-i)/(i<<1)+1)*i;
    printf("%I64d",ans);
}

  

posted on 2020-02-22 16:00  欣崽  阅读(198)  评论(0编辑  收藏  举报

导航