pku2192(并查集+枚举)
这题的话,跟食物链很相识,也是有三类,所以那个公式的话,还是一样的
题意是要找出里面唯一的一个judge,judge的特别就是他没有固定属于哪一类,所以只能枚举每一个人当judge的情况了
满足是唯一的judge的条件:
1)当然就是枚举完所有人,只有一个的时候,那就是唯一的了;
2)当此人是judge时,所有语句都成立,即不发生冲突
在这里题目还要出输出,在第几行判断该人是judge的,这个也蛮好理解的,此人之前的所有人作为judge时出现矛盾的行数的最大值就是就是我们判断的依据,
其实也可以这样想,判断当前面所以人不能成为judge的行数的最大,就是我们判断此人为judge的行数
当不止一个人可以成为judge是,输出Can not determine
当所有人都不能成为judge是,输出Impossible
#include<stdio.h>
#define MAXN 510
int f[MAXN],r[MAXN];
int a[2010],b[2010];
int find(int x)
{if(x==f[x])return f[x];int t=find(f[x]);r[x]=(r[x]+r[f[x]])%3;f[x]=t;return f[x];
}
int Union(int x,int y,int d)
{int a=find(x);int b=find(y);if(a==b){if((r[x]+d)%3==r[y])return 1;else return 0;}else {f[b]=a;r[b]=(r[x]-r[y]+d+3)%3;}return 1;
}
int main()
{int n,m,i,j,flag,num,d,max,k;char c[2001];while(scanf("%d %d",&n,&m)!=EOF){for(j=1;j<=m;j++)scanf("%d%c%d",&a[j],&c[j],&b[j]);num=max=0;for(i=0;i<n;i++){for(k=0;k<n;k++)//初始化{f[k]=k;r[k]=0;}for(j=1;j<=m;j++){if(a[j]==i||b[j]==i)//当我们以i为judge时,输赢都无所谓,所以不合并,应该说是不能合并continue;if(c[j]=='=')d=0;else if(c[j]=='<')d=1;else d=2;if(Union(a[j],b[j],d)==0)break;}if(j==m+1)//所有语句都正确{num++;flag=i;}else {if(j>max)max=j;}//if(num>=2)break;}if(num==0)printf("Impossible\n");else if(num==1)printf("Player %d can be determined to be the judge after %d lines\n",flag,max);else printf("Can not determine\n");}return 0;
}
转载于:https://www.cnblogs.com/nanke/archive/2011/05/12/2044210.html
pku2192(并查集+枚举)相关推荐
- poj2912(种类并查集+枚举)
题目:http://poj.org/problem?id=2912 题意:n个人进行m轮剪刀石头布游戏(0<n<=500,0<=m<=2000),接下来m行形如x, y, ch ...
- poj2912(带权并查集+枚举)
题目链接:http://poj.org/problem?id=2912 题意:给n个人,m组关系,玩石头剪刀布的游戏,n个人中除一个人judge以外,其他人属于3个group(即石头.剪刀.布),他们 ...
- N - 嘤嘤嘤 (并查集+枚举)
Our lovely KK has a difficult Social problem. A big earthquake happened in his area. N(2≤N≤2000)N(2≤ ...
- HDU-5624 -KK's Reconstruction(并查集+枚举)
Problem Description Our lovely KK has a difficult Social problem. A big earthquake happened in his a ...
- hdu 1598 find the most comfortable road (并查集+枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000/ ...
- BZOJ 1050: [HAOI2006]旅行comf(枚举+并查集)
[HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点 ...
- hdu1589(枚举+并查集)
find the most comfortable road Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- Rochambeau POJ - 2912 (枚举和加权并查集+路径压缩)找唯一裁判
题意:有n个人玩石头剪刀布,有且只有一个裁判.除了裁判每个人的出拳形式都是一样的. a<b表示b打败a,a=b表示a和b出拳一样,平手.a>b表示a打败b. 给出m个回合的游戏结果,问能否 ...
- POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)
题意 在一个有N(1 ≤ N ≤ 1,000)个点环形图上有P(1 ≤ P ≤ 10,000)对点需要连接.连接只能连接环上相邻的点.问至少需要连接几条边. 思路 突破点在于最后的结果一定不是一个环! ...
最新文章
- RANet : 分辨率自适应网络效果和性能的best trade-off | CVPR 2020
- 新晋院士:直到硕士毕业前都想做公务员,现在只对科研感兴趣
- Jasperreport之与Springboot整合
- python网页保存为图片_使用Python保存网页上的图片或者保存页面为截图
- linux 如何安装Python3.5
- _新车 | 新款捷豹F-PACE登陆广州车展!内外提升十分明显
- LinkedListArrayList
- python字典示例简单代码_python学习笔记:字典的使用示例详解
- 带网格的_【我看身边的网格化】申港街道:一人一板穿梭楼宇小巷 一网一格解决百姓问题...
- echarts地图文字重叠解决方案_踩坑日记:在Echarts中国地图踩到的坑
- 阅读科研文献心得分享(二)
- [中国近代史] 第四章测试
- 以太联盟 基于区块链技术的角色扮演对战游戏
- VCD零售/出租管理系统
- Android源码分析 - Framework层的Binder(客户端篇)
- linux系统配置X11
- 基础SQL语法语句大全(一篇学会所有SQL语句)
- 【学习笔记】云计算关键技术_虚拟化
- 2022年湖南省临床执业医师考试混合单元随机模拟题
- 2020-7-13:记录足迹。西电计算机考研总结 优研计划夏令营
热门文章
- react 显示当前时间_React 灵魂 23 问,你能答对几个?
- linux启动关闭脚本,Linux中启动/停止/重启/状态的startup脚本
- 零基础入门语义分割——Task2 数据扩增
- Python计算机视觉中译本实例代码/数据集
- 物体检测,用于检测红灯笼demo(含训练代码)
- 隔行变色java代码_纯js实现隔行变色效果
- nginx安装与项目发布
- 服务器如何关闭登录日志文件,linux云服务器登录日志文件
- 霍夫直线检测python_python+opencv实现霍夫变换检测直线的方法
- Android Binder通信机制