关押罪犯洛谷P1525
题目+评测传送门
思路
其实这一题有2种不同的思路,但是由于我实在是太蒟蒻了,只会其中一种,另一种看了半天都不知道它在讲什么/(ㄒoㄒ)/~~
首先,我们要学习一下二分图及其判断方法博客,然后这个题目就很好解决了,我们二分计算仇恨值,然后在如果2人仇恨值大于mid,我们就把他们相连,然后判断这个图是否是二分图,即在左右部分里面"没有冲突",而判断是否是二分图的方法,上面给的链接里面也讲了,然后这道题就OK啦
代码
1 #include<bits/stdc++.h> 2 #define FOR(i,a,b) for(register int i=a;i<=b;i++) 3 #define ll long long 4 #define gc getchar(); 5 using namespace std; 6 int n,m,maxx=0,num=0,ans; 7 int head[20000+10]; 8 int colo[20000+10]; 9 struct s1 10 { 11 int fm,to,vl,nt; 12 }a[2*100000+10]; 13 int scan() 14 { 15 int as=0,f=1;char c=gc; 16 while(c>'9'||c<'0'){if(c=='-') f=-1;c=gc}; 17 while(c>='0'&&c<='9') {as=(as<<3)+(as<<1)+c-'0';c=gc}; 18 return as*f; 19 } 20 void ad(int fm,int to,int vl) 21 { 22 a[++num].nt=head[fm]; 23 a[num].fm=fm;a[num].to=to;a[num].vl=vl; 24 head[fm]=num; 25 } 26 bool chek(int mid) 27 { 28 memset(colo,0,sizeof(colo)); 29 queue <int> q; 30 FOR(i,1,n) 31 { 32 if(colo[i]) continue; 33 q.push(i);colo[i]=1;//如果没有进入,随便进入一个坑,反正之前的都 34 //已经解决完了 35 while(!q.empty()) 36 { 37 int u=q.front(); q.pop(); 38 for(int j=head[u];j;j=a[j].nt) 39 { 40 if(a[j].vl>=mid) 41 { 42 if(colo[a[j].to]==0) 43 { 44 colo[a[j].to]=colo[u]==1?2:1;//对立面的颜色 45 q.push(a[j].to); 46 } 47 else if(colo[a[j].to]==colo[u]) return false; 48 } 49 } 50 } 51 } 52 return true; 53 } 54 int main() 55 { 56 n=scan();m=scan(); 57 FOR(i,1,m) 58 { 59 int f,t,v; 60 f=scan();t=scan();v=scan(); 61 maxx=max(v,maxx); 62 ad(f,t,v);ad(t,f,v); 63 } 64 int l=0,r=maxx+1; 65 while(l+1<r) 66 { 67 int mid=(l+r)>>1; 68 if(chek(mid)) r=mid; 69 else l=mid; 70 } 71 cout<<l; 72 return 0; 73 }
转载于:https://www.cnblogs.com/KSTT/p/10368510.html
关押罪犯洛谷P1525相关推荐
- 并查集——关押罪犯(洛谷 P1525)
题目选自洛谷P1525 此题是一道很经典,而且很好的题目.思路也十分的新颖,比较的难以捉摸. 题面大意:(人性翻译) 给你m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w 请你判断分配x和y到两 ...
- NOIP2010关押罪犯题解(洛谷P1525) (并查集)
NOIP2010关押罪犯题解(洛谷P1525) (并查集) 日常膜拜dalao:财神万岁!!!!!!!!!!!!!!!!!!!!! 日常凌晨三点水题解..(原谅我中间断更了几天,,马上分班考试了竞赛顾 ...
- 洛谷P1525 关押罪犯
P1525 关押罪犯 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用" ...
- 关押罪犯-并查集、贪心
题目来源:Acwing 257.关押罪犯&洛谷 P1525 [NOIP2010 提高组] 关押罪犯 思路来源:这里 题目描述 S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为1~N. 他 ...
- [NOIP2010提高组]关押罪犯
题目:洛谷P1525.Vijos P1776.codevs1069. 题目大意:有一些罪犯,两个罪犯之间可能会发生冲突,冲突有个影响力,而如果两个罪犯在不同监狱里,就可以避免冲突.现在有两个监狱,要你 ...
- #洛谷oj:P1525 [NOIP2010 提高组] 关押罪犯
洛谷oj:P1525 [NOIP2010 提高组] 关押罪犯 #题目描述 #一看很明显是贪心算法 加排序 因为 这个中间最大值的那一对肯定是不会在一起的 从大到小来看 所有点对都尽量不要在一个监狱 # ...
- P1525 关押罪犯(扩展域并查集/二分图)
洛谷题目链接 输入 4 6 1 4 2534 2 3 3512 1 2 28351 1 3 6618 2 4 1805 3 4 12884 输出 3512 1.并查集 有意思的一道并查集的题,需要一些 ...
- Luogu P1525 【关押罪犯】
跟P1892团伙的做法类似. 除了用数组保存敌人编号之外,还有另一种做法. 团伙:合并时,用i节点表示为友,i+n结点表示为敌. 本题:合并时,用i节点表示同一监狱,i+n结点表示不同监狱. 按边权从 ...
- 洛谷:P2172 [国家集训队]部落战争
题目链接: P2172 [国家集训队]部落战争 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 解题思路: 很明显的二分图:将原点与它能走到的点连一条边,然后做一遍最小点覆盖:即选出 ...
最新文章
- MS CRM 2011 RC中的新特性(2)——销售自动化方面
- core+2.0+mysql_【Asp.Net Core】ASP.NET Core 2.0 + EF6 + Linux +MySql混搭
- 最强六大开源轻量级人脸检测项目分析 | 附打包下载
- win98 老电脑 文件导出_首次装电脑之前何不先模拟一番,这款练手神器可以帮你...
- C#多线程开发-使用并发集合
- vue-element-admin中 vuex 的使用
- minicom/picocom/cutecom/putty 安装与使用教程
- 抖音去水印解析网址入口_抖音去水印 视频去水印 小工具
- 数据库系统实训——实验九——函数
- glide源码中包含了那种设计模式_Glide源码解读(一)
- 常用的Java开发工具
- 米思齐 超声波传感器控制小灯泡
- 华为交换机eth口作用_华为交换机 eth-trunk
- app开发大致流程介绍(给非专业人士通俗易懂的明白):
- Python爬虫 刷博客访问量
- springcloud以及四大神兽面试涉及知识总结(持续更新)
- MathType无法加载mathpage.wll文件
- Unity3D笔记第十六天——Mecanim动画系统
- 为啥联通卡显示无服务器,天津联通物联卡显示无服务器
- Lect2 线性分类