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个恶魔,天使只说 ...
随机推荐
- JavaScript取消默认控件并添加新控件(DOM编程艺术第11章)
这一章实现的这个功能我研究了好久,这个思路我感觉已经是现在的我要膜拜的了,我感觉我的逻辑还是有些问题. 第一个问题:vid.height与vid.videoHeight vid.height = vi ...
- <基础> PHP 文件、目录操作
php文件目录操作 目录操作 is_dir ( $path ) 判断当前路径是否为目录 ,返回布尔 opendir ( $path ) 打开路径目录,返回资源 readdir ( $handle ) ...
- Windows下卸载Apache、Mysql
卸载Apache 1. 停止服务 2.以管理员身份打开命令环境 3. 删除Apache文件目录 卸载Mysql 一.在控制面板,卸载MySQL的所有组件控制面板——>所有控制面板项——>程 ...
- centos如何安装tomcat
1 通过 SecureCRT 连接到阿里云 CentOS7 服务器; 2 进入到目录 /usr/local/ 中: cd /usr/local/ 3 创建目录 /usr/local/tools,如果有 ...
- php中显示数组与对象的实现代码
1. 使用 print_r ( $array/$var ) print 是打印的意思,而r则取自Array的单词,那么该函数的功能就是打印数组内容,它既可以打印数组内容,也可以打印普通的变量. pri ...
- APP-7-百度地图移动轨迹
1.代码部分 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <me ...
- 工作记录 rfcn网络结构 caffe time测速和实际运行中速度不相等。
现象: 用caffe time测试网络结构,前向传播是 8 ms左右, 实际集成后运行的时候,forward耗时大概4-5ms. 输入大小是一致的. 于是开始查这个问题. 最后定位到,差别在propo ...
- docker之docker-machine用法
转自:https://www.cnblogs.com/jsonhc/p/7784466.html docker-machine 是docker官方提供的docker管理工具.通过docker-mach ...
- void类型详解
void含义 void的字面意思是"无类型",void*则为"无类型指针",void*可以指向任何类型的数据. void几乎只有"注释"和限 ...
- RabbitMQ系列教程之一:我们从最简单的事情开始!Hello World(转载)
RabbitMQ系列教程之一:我们从最简单的事情开始!Hello World 一.简介 RabbitMQ是一个消息的代理器,用于接收和发送消息,你可以这样想,他就是一个邮局,当您把需要寄送的邮件投递到 ...