社区讨论

为什么题解里没有这种思路

P6691选择题参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mmfpzqro
此快照首次捕获于
2026/03/07 10:44
3 天前
此快照最后确认于
2026/03/08 19:00
前天
查看原帖
用并查集中i+n存储i相反的意思
当opt==1时
add(i,a),add(i+n,a+n);
否则
add(i+n,a),add(i,a+n);
当有任何一个i存在find(i)==find(i+n)时无解
然后再用num[i]存储一个并查集内的编号为1~n的节点的个数
最后答案就是这样求
CPP
	for(int i=1;i<=n;i++){
		if(fa[i]==i){
			tot=tot*2%mod;
			maxans+=max(num[i],num[i+n]);
			minans+=min(num[i],num[i+n]);
		}
	}
感觉比题解里的简单多了

回复

3 条回复,欢迎继续交流。

正在加载回复...