「题解」Codeforces 959E Mahmoud and Ehab and the xor-MST

「题解」Codeforces 959E Mahmoud and Ehab and the xor-MST

直接考虑模拟 Kruskal.

假设有 k 个二进制位。

  • 首先加入权为 1 的边,那么二进制下前 (k1) 位相同的在一个连通块里。
  • 加入权为 2 的边,二进制下前 (k2) 位相同的连通。
  • 加入权为 3 的边,由于 xxory=3 一定满足前 (k2) 位相同,所以并不会产生连通块的合并。
  • ......

则可以发现加入权为 2t1 的边时,会使二进制下前 (kt) 位相同的合并在一起。加入的边数即为之前合并出来的连通块数除以 2 上取整。

然后权值大于 2t1 且小于 2t 的边都没有用了,因为两个点之间有这样一条边一定满足前 (kt) 位相同。

i=2t,则答案为:

i×ni2

#include<iostream>
long long n,ans;
signed main(){
	std::cin >> n;
	for(long long i=1;i<=n;i*=2)
		ans+=i*((n+i-1)/i/2);
	std::cout << ans << '\n';
	return 0;
}
posted @   do_while_true  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?

This blog has running: 1845 days 1 hours 34 minutes 0 seconds

点击右上角即可分享
微信分享提示