poj2912(带权并查集+枚举)
题目链接:http://poj.org/problem?id=2912
题意:给n个人,m组关系,玩石头剪刀布的游戏,n个人中除一个人judge以外,其他人属于3个group(即石头、剪刀、布),他们只能出这一个手势,而judge可以随便出,要求能否找到judge和在第几组关系时能最先找到judge。
思路:poj1182食物链的进阶版,与那题不同的是,这里需要枚举0到n-1,枚举i假设其为judge,然后遍历不包含i的所有关系,如果符合条件,则i就是judge,否则其不是judge,记录其判断出不是judge的那条边line(后面要用),遍历结束之后,如果judge数目num<1,则Impossible,若num>1,则Can not determine,若num=1,则其为judge,但需要输出判断其为judge的最小的line,其实也就是其它非judge判断为非judge的边line的最大值,这里有点巧妙。
其余的就和食物链一样了,x->y=-1(<),0(=),1(>),且 x->z=(x->y+y->z+4)%3-1,公式自己手动算一下就明白了。
AC代码:
#include<cstdio>
#include<cstring>
using namespace std; struct node{
int x,y;
char c;
}a[]; int n,m,root[],f[],ans[],res,num; int getr(int k){
if(root[k]==k) return k;
else{
int tmp=root[k];
root[k]=getr(root[k]);
f[k]=(f[k]+f[tmp]+)%-;
return root[k];
}
} int main(){
while(~scanf("%d%d",&n,&m)){
if(!m){
if(n==)
printf("Player 0 can be determined to be the judge after 0 lines\n");
else
printf("Can not determine");
continue;
}
memset(ans,,sizeof(ans));
num=;
for(int i=;i<=m;++i)
scanf("%d%c%d",&a[i].x,&a[i].c,&a[i].y);
for(int i=;i<n;++i){
bool flag=true;
for(int j=;j<n;++j)
root[j]=j,f[j]=;
for(int j=;j<=m;++j){
if(a[j].x!=i&&a[j].y!=i){
int t1=a[j].x,t2=a[j].y,t3,r1,r2;
if(a[j].c=='<') t3=-;
else if(a[j].c=='=') t3=;
else t3=;
r1=getr(t1),r2=getr(t2);
if(r1==r2){
if(f[t1]!=(t3+f[t2]+)%-){
ans[i]=j;
flag=false;
break;
}
}
else{
root[r2]=r1;
f[r2]=(-((t3+f[t2]+)%-)+f[t1]+)%-;
}
}
}
if(flag)
++num,res=i;
}
if(num<)
printf("Impossible\n");
else if(num>)
printf("Can not determine\n");
else{
int Max=;
for(int i=;i<n;++i)
if(ans[i]>Max)
Max=ans[i];
printf("Player %d can be determined to be the judge after %d lines\n",res,Max);
}
}
return ;
}
poj2912(带权并查集+枚举)的更多相关文章
- POJ - 2912 Rochambeau (带权并查集+枚举)
题意:有N个人被分为了三组,其中有一个人是开了挂的.同组的人的关系是‘=’,不同组的人关系是‘<’或'>',但是开了挂的人可以给出自己和他人任意的关系.现在要根据M条关系找出这个开了挂的人 ...
- poj2912 带权并查集
题意:多个人玩石头剪刀布,每个人提前选定了自己出哪个手势,而其中有一种特殊的人他可以随意出什么手势,问是否能够从给出的一系列石头剪刀布游戏中判断出哪个是特殊的,可以从第几局游戏中判断出来. 首先按照食 ...
- POJ 2912 Rochambeau(难,好题,枚举+带权并查集)
下面的是从该网站上copy过来的,稍微改了一点,给出链接:http://hi.baidu.com/nondes/item/26dd0f1a02b1e0ef5f53b1c7 题意:有N个人玩剪刀石头布, ...
- POJ2912:Rochambeau(带权并查集)
Rochambeau Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5208 Accepted: 1778 题目链接:h ...
- Lightoj1009 Back to Underworld(带权并查集)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Back to Underworld Time Limit:4000MS ...
- HDU 5176 The Experience of Love 带权并查集
The Experience of Love Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/O ...
- poj 1733 Parity game(带权并查集+离散化)
题目链接:http://poj.org/problem?id=1733 题目大意:有一个很长很长含有01的字符串,长度可达1000000000,首先告诉你字符串的长度n,再给一个m,表示给你m条信息, ...
- luogu 2294 狡猾的商人 带权并查集
此题做法多啊 带权并查集,区间dp,前缀和,差分约束 1.自己写的前缀和, 11 #include<bits/stdc++.h> #define rep(i,x,y) for(regist ...
- poj1417(带权并查集+背包DP+路径回溯)
题目链接:http://poj.org/problem;jsessionid=8C1721AF1C7E94E125535692CDB6216C?id=1417 题意:有p1个天使,p2个恶魔,天使只说 ...
随机推荐
- Pig latin基础
pig的两种运行模式,local模式,mapreduce模式 local模式下,pig只能访问本地一台:在mapreduce模式下,pig可以访问一个hadoop集群和hdfs的安装位置.这时,pig ...
- FLEX中一组基于button的组件
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- JAVA SpringBoot 项目打包(JAR),在打包成 docker 镜像的基本方法
1,打包 SpringBoot 项目,使用 IDEA 如下图 2,将 JAR 包上传到安装了 Docker 的 linux 服务器上,并且在相容目录下创建一个名为 Dockerfile 的文件 3,在 ...
- cookies_ajax
views def test_user(request): print('start') if request.method=='POST': print('goon_test_user') user ...
- jsp不解析el表达式,不识别jstl标签,找不到http://java.sun.com/jsp/jstl/core
问题描述: jsp页面中el表达式,例如:${pageContext.request.contextPath},原样呈现,未被解析. 解决方案: 为jsp页添加page指令如下: <%@ pag ...
- Delphi TMemoryStream写入到字符串和字符串写入到流
一.TMemoryStream数据写入到字符串里 var lvStream:TMemoryStream; s:AnsiString; p: PAnsiChar; begin lvStream:= TM ...
- Linux命令:chmod
https://baijiahao.baidu.com/s?id=1616750933810368135&wfr=spider&for=pc
- select min from 连接
预先准备 create table p( name ) ); insert into p values('黄伟福'); insert into p values('赵洪'); insert into ...
- Oracle VM VirtualBox各种显示模式切换 热键
初用VirtualBox, 几个显示切换快捷键还是要记一下的: Right Ctrl + F -- 切换到全屏模式 Right Ctrl + L -- 切换到无缝模式 Ri ...
- php压力测试工具简单实用方法
命令 ab -h 指令帮助 ab -n100 -c10 http://www.baidu.com 发起100个请求 并发数为10 设置测试地址是百度,注意测试测试时候请求数和并发数尽量设置低一点 Re ...