题目传送门

感想:相信自己的想法!继续挖掘!

读完题目后:看到的最大值最小?二分答案啊!再仔细一看:wi达到了1e9,二分可能费点劲。(其实真的是可以的)而且check函数貌似并没有什么行之有效的写法。继续往下想。

再读读,想到我们肯定尽量不想让有仇恨的犯人关在一起,所以每次就把有仇的敌人用并查集并在一起(其实想法是挺好的,到这一步出现了偏差)。

结果...然后就没有结果了!

唉其实应该自己再多想想的嘛...还是去看了@Chemist和@new2zy两位巨佬的题解。主要有两种方法。

法一:二分图+二分答案

这题很好的满足了二分图的性质。是不错的二分图例题。

给出二分图定义:若无向图的n个节点可分为A,B两个非空集合,且A,B的交集为空集,且同一集合内的点没有边相连,称这种图为二分图。

二分图判定定理:一张无向图是二分图,当且仅当它不存在奇环。

代码实现:染色法。用黑白来标记图中两种节点,用大法师(Dfs)或绑发饰(Bfs)实现,遍历每条边如果没被访问,就染相反的颜色,否则判断它已染的色是否不合法。(根据定义,一个节点被标记后,它所有的相邻节点颜色应与他不同)。

get了这个知识,我们可以与最初的想法二分答案结合,本题中一个合法解需满足存在二分图的情况,而最优解可以通过二分实现。那么判断是否为二分图就成为了check函数的内核。

Code

 #include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue> using namespace std; int n,m,tot,l,r;
int head[],vis[];
struct node{
int to,next,val;
}edge[]; void add(int x,int y,int z)
{
edge[++tot].to=y;
edge[tot].val=z;
edge[tot].next=head[x];
head[x]=tot;
} bool check(int w)
{
memset(vis,,sizeof(vis));
queue<int>q;
for(int k=;k<=n;k++)
if(!vis[k])
{
q.push(k);vis[k]=;
while(!q.empty())
{
int x=q.front();
q.pop();
for(int i=head[x];i;i=edge[i].next)
if(edge[i].val>=w)
{
int y=edge[i].to;
if(!vis[y]) vis[y]=-vis[x],q.push(y);
else if(vis[y]==vis[x]) return false;
}
}
}
return true;
} int main()
{
scanf("%d%d",&n,&m);
// l=1;
for(int i=;i<=m;i++)
{
int a=,b=,c=;
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
r=max(r,c);
}//r++;
while(l<r)
{
int mid=(l+r+)>>;
if(check(mid)) r=mid-;
else l=mid;
}
printf("%d",l);
return ;
}

*代码细节注意:入队地点(没被访问过),二分细节。

法二:冰茶几+略微贪心思想

由于Chemist大神已经讲的十分清楚,我就少发表些拙见。(扔下地址跑)

我们当然可以贪心地把仇恨值从大到小排序,先使仇恨值大的几对罪犯分到两个监狱,再秉承《团伙》一题中“敌人的敌人就是朋友”的观念,如果实在分不开了,当前的就是答案。

现在这么优质的一题多解的noip题已经很难找了。好题!好题!

NOIp 2010/Luogu P1525 关押罪犯 【二分图/并查集】 By cellur925的更多相关文章

  1. 洛谷P1525 关押罪犯(并查集、二分图判定)

    本人蒟蒻,只能靠题解AC,看到大佬们的解题思路,%%%%%% https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编 ...

  2. P1525 关押罪犯[扩展域并查集]

    题目来源:洛谷 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整 ...

  3. Luogu P1525 关押罪犯

    传送门 首先 这是一个并查集= = 这道题其实明白了还挺简单的qwq 思路: 因为只看仇恨值最大的一对儿,所以把他们从大到小排序,越大的就尽量分开,直到不能再分为止qwq q[x]表示x最大的敌人(x ...

  4. codevs1069关押罪犯(并查集)

    题目描述 Description S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极 不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨 ...

  5. 洛谷1525 关押罪犯NOIP2010 并查集

    问题描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突.我们用“怨气值”(一个正整数值)来表示某两 ...

  6. NOIP2010 关押罪犯 (并查集)

    若x,y有关系 将x与y的补集, y与x的补集建立关系 ; maxm=; ..maxm,..] of longint; f:..maxn*] of longint; i,j,m,n,x,y,z:lon ...

  7. AcWing 257. 关押罪犯 (并查集)打卡

    题目:https://www.acwing.com/problem/content/description/259/ 题意:有两个监狱,监狱里面有很多犯人,现在有很多对冲突,还有个冲突值,现在问我们怎 ...

  8. 洛谷 P1525 关押罪犯==codevs 1069 关押罪犯[NOIP 2010]

    P1525 关押罪犯 513通过 1.4K提交 题目提供者该用户不存在 标签图论并查集NOIp提高组2010 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 咳咳.竟MLE了. 囧.运行时错误 ...

  9. 洛谷 P1525 关押罪犯

    题目链接 https://www.luogu.org/problemnew/show/P1525 题目描述 S城现有两座监狱,一共关押着N名罪犯,编号分别为1−N.他们之间的关系自然也极不和谐.很多罪 ...

随机推荐

  1. 定制 ArcEngine 要素编辑工具

    来自:http://blog.sina.com.cn/s/blog_4d780fc10101d2d5.html 先初步了解到大概用到的下面的接口和类: IEngineEditor IEngineEdi ...

  2. Android之怎样实现滑动页面切换【Fragment】

    Fragment 页面切换不能滑动 所以对于listview 能够加入的左右滑动事件 .不会有冲突比如(QQ的好友列表的删除)  Fragment 和viewpager 的差别  Viewpager ...

  3. [Angular] Communicate Between Components Using Angular Dependency Injection

    Allow more than one child component of the same type. Allow child components to be placed within the ...

  4. 微信小程序 常见问题 小结

    1.微信小程序 尺寸单位 rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应.规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则 ...

  5. HDU 5288(OO’s Sequence-区间互质情况统计)

    OO's Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  6. 【Mongodb教程 第三课 】MongoDB 删除数据库

    dropDatabase() 方法 MongoDB db.dropDatabase() 命令是用来删除一个现有的数据库. 语法: dropDatabase() 命令的基本语法如下: db.dropDa ...

  7. 数据结构-二叉树的遍历(类C语言描写叙述)

    遍历概念     所谓遍历(Traversal)是指沿着某条搜索路线.依次对树中每一个结点均做一次且仅做一次訪问.訪问结点所做的操作依赖于详细的应用问题. 遍历是二叉树上最重要的运算之中的一个,是二叉 ...

  8. 一个IM开源项目LiteTalk

    http://blog.csdn.net/visualwind/article/details/6086631 http://blog.sina.com.cn/s/blog_54b5ea250101n ...

  9. Windows下安装MySQL5.6绿色版

    建议安装MySQL绿色版的,什么是绿色版的?就是免安装,下载下来的截图是这样的 在该目录下创建一个文件夹/data用于存放数据, 新建一个my.ini文件,my.ini里面最基本的配置如下,my.in ...

  10. HttpWebRequest中的ContentType详解

    1.参考网络资源: http://blog.csdn.net/blueheart20/article/details/45174399  ContentType详解 http://www.tuicoo ...