并查集的补集 (关押罪犯)
定义元素T的逆为t,t一定不在包含T的集合里
因为对于两个需要分配在不同集合的元素A、B,我们并不知道具体该怎么分,所以就令元素A和b在一起,元素B和a在一起。
避免了直接分配A,B到哪一个集合的问题!!!
自己模拟最快明白
例题:关押罪犯2010年NOIP全国联赛提高组
#include <bits/stdc++.h> using namespace std; const int MAX = 100000 + 10; int i,j,n,m,x,y; int f[MAX]; struct angry {int p1,p2,nu; }ang[MAX]; bool com(angry a,angry b) {return a.nu>b.nu; } int getf(int t) {return f[t]=f[t]==t?t:getf(f[t]); } int main() {scanf("%d%d",&n,&m);for(i = 1; i <= n*2; i++) f[i]=i;for(i = 1; i <= m; i++) scanf("%d%d%d",&ang[i].p1,&ang[i].p2,&ang[i].nu);sort(ang+1,ang+1+m,com);for(i = 1; i <= m; i++){x=getf(ang[i].p1),y=getf(ang[i].p2);if(x==y){printf("%d",ang[i].nu);return 0;} f[x] = getf( ang[i].p2 + n);//间接分配集合f[y] = getf( ang[i].p1 + n);}printf("0");//注意特殊情况return 0; }
转载于:https://www.cnblogs.com/callmebg/p/7619829.html
并查集的补集 (关押罪犯)相关推荐
- [NOIP2010]关押罪犯
题目描述 Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用&quo ...
- 【NOIP2010】【codevs1069】关押罪犯(并查集补集,拆点)
problem 有n个罪犯和m对关系(表示两个罪犯的怨气值) 有2座监狱分别关押他们,当2个罪犯在同一个监狱时怒气值就会爆发. 如何分配让所有产生的怨气值中最大的怨气值最小,输出该怨气值. solut ...
- 【原创】并查集之扩展域与边带权
[前言] 并查集是一种可以动态维护若干个不重叠的集合,并支持合并于查询的数据结构. 并查集的基本概念很简单,但是这样一种思想的用途十分广泛. 个人理解:这是一种很巧妙的,可以很好的处理对象之间关系的数 ...
- noip2010关押罪犯
https://www.zybuluo.com/ysner/note/1334611 居然开始写水题题解了,noip退役预定 题面 戳我 解析 这道题似乎有三种做法: 并查集 我们知道,如果要求两个人 ...
- P1525关押罪犯(并查集补集)
问题传送门 问题描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1-N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用"怨气值&qu ...
- 关押罪犯-并查集、贪心
题目来源:Acwing 257.关押罪犯&洛谷 P1525 [NOIP2010 提高组] 关押罪犯 思路来源:这里 题目描述 S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N. 他 ...
- CH - 4901 关押罪犯(二分图判定+二分/并查集)
题目链接:点击查看 题目大意:一共有n个罪犯,有m对仇人,每对仇人都有一个仇恨值,如果两个仇人在一起的话,会对监狱造成等价于仇恨值的损失,现在有两个监狱,可以将罪犯们分开关押,问监狱的最小损失是多少 ...
- 专题突破三之并查集Ⅱ——星球大战,In Touch,方格染色,Junk-Mail Filter,关押罪犯,Silver Woods,Must Be Rectangular!
文章目录 [JSOI2008]星球大战 In Touch 方格染色 Junk-Mail Filter [NOIP2010 提高组] 关押罪犯 Silver Woods Must Be Rectangu ...
- 并查集——关押罪犯(洛谷 P1525)
题目选自洛谷P1525 此题是一道很经典,而且很好的题目.思路也十分的新颖,比较的难以捉摸. 题面大意:(人性翻译) 给你m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w 请你判断分配x和y到两 ...
最新文章
- SNMP在windows linux router上的配置笔记
- Python常见编译错更新
- VC6导入和使用二进制资源
- Native snappy library not available: this version of libhadoop was built without snappy support
- 树的存储结构-双亲表示法
- html to docx
- 【Python】Python中的引用和赋值
- HDU 5928 DP 凸包graham
- android h5链接蓝牙,h5+runtime Native.js 混合APP连接蓝牙打印机
- 【数据结构笔记19】File Transfer的C语言实现,集合的简化表示,按秩归并,路径压缩
- C#进阶高级程序员开发必知必会:泛型的定义实操案例: 实现堆栈的后进先出功能
- python系列之:字典update
- Java文字转语音功能实现
- Js中${}字符串拼接
- 二维码(微信二维码)缓存问题的解决方法
- 【Java项目】好客租房——数据库集群部署
- 外星飞船CSS3动画代码
- 666666666666.com路路解密破解游戏第一部23题攻略
- Minio 在Linux环境部署报错error occured ErrorResponse(code=InternalError, message=We encountered an internal
- 基于深度学习的人脸性别识别系统(含UI界面,Python代码)
热门文章
- 4.3.2 用jQuery进行异步加载(2)
- N皇后问题位运算符解法【转载】
- Ubuntu16.4 将python3.5重新切换为python2.7后,pip运行出错
- 随机样本一致性:一种用于图像分析和自动制图的模型拟合模型(2)--(P3P)
- OpenCV--矩阵操作总结
- edu汇编语言——实训课程
- B. Who‘s Opposite?
- Python GUI界面编程初步 02 - Tkinter基础
- Redmine Gantt 实现 (Show relations in Gantt diagram)
- String和QString之间的转化----可避免出现中文乱码的现象