求救一道异或最小生成树
  • 板块学术版
  • 楼主zz125929280
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/11/9 20:14
  • 上次更新2023/11/4 01:01:03
查看原帖
求救一道异或最小生成树
611772
zz125929280楼主2021/11/9 20:14

给定n个点,编号为0~n-1

对于每两个不同的点i,j(i!=j),他们之间有一条边,边权为i与j的异或值

即对于任意的i,j(i!=j) i与j之间有一条边为,边权为i^j

请输出这个完全图的最小生成树的边权之和.

n数据范围:2<=n<=10^12

//

#include<cstdio>
#define ll long long
using namespace std;
ll n,ans,base=1;
int main(){
	scanf("%lld",&n);
	while(n>1){
		ans+=base*(n>>1);base<<=1;n-=n>>1;
	}printf("%lld\n",ans);
	return 0;
}

这是标答代码 啥意思呀 我理解不了

2021/11/9 20:14
加载中...