poj 2912 Rochambeau(枚举+带权并查集)
题目链接:http://poj.org/problem?id=2912
题意:多个人玩石头剪刀布分成3组和一个裁判,每一组提前选定了自己出哪个手势,裁判可以随意出什么手势,问是否能够从给出的一系列石头剪刀布游戏中判断出哪个是裁判的,可以从第几局游戏中判断出来。
由于这题的数据量比较小可以枚举一下,枚举一下每一个人假设他们是裁判然后一系列并查集下来看
有没有出现矛盾如果没有那么这个人可能是裁判候补,如果有矛盾那么这个人肯定不是记录一下出现
问题的位置然后继续枚举。位置要去最远的,因为都要判完才知道。如果最后没有矛盾的数目大于2
说明不能确定裁判是谁,如果为0就不可能,其他则是
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int n , m , f[510] , root[510];
struct TnT {
int x , y;
char cp;
}node[2010];
void init() {
for(int i = 0 ; i < n ; i++) {
f[i] = i , root[i] = 0;
}
}
int find(int x) {
if(x == f[x])
return x;
int tmp = find(f[x]);
root[x] = (root[x] + root[f[x]] + 3) % 3;
return f[x] = tmp;
}
int main() {
int x , y;
char s[20] , cp;
while(scanf("%d%d" , &n , &m) != EOF) {
for(int j = 1 ; j <= m ; j++) {
scanf("%s" , s);
int len = strlen(s) , temp = 0;
x = 0 , y = 0;
for(int i = 0 ; i < len ; i++) {
if(s[i] == '=' || s[i] == '<' || s[i] == '>') {
temp = i;
cp = s[i];
break;
}
}
for(int i = 0 ; i < temp ; i++) {
x *= 10;
x += s[i] - '0';
}
for(int i = temp + 1 ; i < len ; i++) {
y *= 10;
y += s[i] - '0';
}
node[j].x = x , node[j].y = y , node[j].cp = cp;
}
int count = 0 , pos = 0 , flag = -1 , num = 0;
for(int i = 0 ; i < n ; i++) {
flag = -1;
init();
for(int j = 1 ; j <= m ; j++) {
if(node[j].x == i || node[j].y == i)
continue;
x = node[j].x , y = node[j].y , cp = node[j].cp;
int a = find(x) , b = find(y);
if(a == b) {
if(cp == '=') {
if(root[x] != root[y]) {
flag = j;
break;
}
}
if(cp == '>') {
if(root[x] != (root[y] + 2) % 3) {
flag = j;
break;
}
}
if(cp == '<') {
if(root[x] != (root[y] + 1) % 3) {
flag = j;
break;
}
}
}
else {
f[a] = b;
if(cp == '=') {
root[a] = root[y] - root[x];
root[a] = (root[a] + 3) % 3;
}
if(cp == '>') {
root[a] = root[y] - root[x] + 2;
root[a] = (root[a] + 3) % 3;
}
if(cp == '<') {
root[a] = root[y] - root[x] + 1;
root[a] = (root[a] + 3) % 3;
}
}
}
if(flag == -1) {
num = i;
count++;
}
else
pos = max(pos , flag);
}
if(count == 0) printf("Impossible\n");
else if(count >= 2) printf("Can not determine\n");
else
printf("Player %d can be determined to be the judge after %d lines\n" , num , pos);
}
return 0; }
poj 2912 Rochambeau(枚举+带权并查集)的更多相关文章
- POJ 2912 Rochambeau(难,好题,枚举+带权并查集)
下面的是从该网站上copy过来的,稍微改了一点,给出链接:http://hi.baidu.com/nondes/item/26dd0f1a02b1e0ef5f53b1c7 题意:有N个人玩剪刀石头布, ...
- POJ 1773 Parity game 带权并查集
分析:带权并查集,就是维护一堆关系 然后就是带权并查集的三步 1:首先确定权值数组,sum[i]代表父节点到子节点之间的1的个数(当然路径压缩后代表到根节点的个数) 1代表是奇数个,0代表偶数个 2: ...
- POJ 1182 食物链 【带权并查集】
<题目链接> 题目大意: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我 ...
- POJ 1182 食物链 (带权并查集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 78551 Accepted: 23406 Description ...
- POJ 1182 食物链 【带权并查集/补集法】
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说 ...
- POJ 1733 Parity game (带权并查集)
题意:有序列A[1..N],其元素值为0或1.有M条信息,每条信息表示区间[L,R]中1的个数为偶数或奇数个,但是可能有错误的信息.求最多满足前多少条信息. 分析:区间统计的带权并查集,只是本题中路径 ...
- poj 1182 食物链【带权并查集】
设相等的边权为0,吃的边权为,被吃的边权为2,然后用带权并查集在%3的意义下做加法即可 关系为简单环的基本都可以用模环长的方式是用带权并查集 #include<iostream> #inc ...
- A Bug's Life POJ - 2492 (种类或带权并查集)
这个题目的写法有很多,用二分图染色也可以写,思路很好想,这里我们用关于并查集的两种写法来做. 题目大意:输入x,y表示x和y交配,然后判断是否有同性恋. 1 带权并查集: 我们可以用边的权值来表示一种 ...
- POJ 2912 - Rochambeau - [暴力枚举+带权并查集]
题目链接:http://poj.org/problem?id=2912 Time Limit: 5000MS Memory Limit: 65536K Description N children a ...
随机推荐
- apache安装zip包安装(非exe)
安装步骤如下: (1) 下载apache安装程序 进入官网:选择一个版本的apache 选择红色区域的内容,在之后进入的页面中: 选择红色区域的内容,进入页面: 现则VC9的进行下载. (2) 安装 ...
- Mysql无法启动情况下,如何恢复数据?
本文适用于,mysql无法启动,但数据文件未丢失的情况. Mysql因意外情况,导致无法启动,数据库未做备份的情况下,如何将数据迁移至其他数据库中. 原数据库地址:192.168.1.100(以下简称 ...
- Mac安装Homebrew的那些事儿
Mac安装Homebrew的那些事儿 最近小明刚换置了一个 Mac 本,想搭建一个属于自己的博客网站,需要用到 Node.js 环境,而Node.js 在 MacOS 中是由 Homebrew 进行安 ...
- powerdesign进军(三)--mysql驱动配置
目录 资源下载 powerdesign配置 总结 第二节我们已经安装了oracle的驱动,但是企业中还有一个重头数据库(mysql),今天来安装mysql驱动.mysql相较oracle比较简单. 资 ...
- JavaWeb零基础入门-01 基础概念说明
一.序言 从学校出来到实习,发现学校学的东西太过基础,难于直接运用于工作中.而且工作中,现在都以web开发为主,学校开了web开发相关课程.自己学的不够深入,所以本人自学JavaWeb开发,介于学习巩 ...
- Navicat连接MYsql报错
在Windows中安装mysql8后,使用Navicat连接数据库是出现“ Client does not support authentication protocol requested by s ...
- 学习Canvas这一篇文章就够了
一.canvas简介 <canvas> 是 HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的 HTML 元素.它可以用来制作照片集或者制作简单(也不是 ...
- Tomcat中文乱码问题
新从官网下载的Tomcat7和Tomcat8,在运行的时候都会有乱码的问题,就此发现问题,我们就给它就地正法! 经过初步的分析,问题产生的大概原因是由于Tomcat的log日志模块不识别中文的问题, ...
- 记一次mysql数据库失而复得过程
背景: 由于是自己买的vps搭建的博客,用的是军哥的一键lnmp源码编译安装的,文章也就几篇,对备份并不太重视,想着等服务器快到期的时候备份一下不就行了. 后来在该服务器上测试lnmp分别编译编译安装 ...
- Docker入门-docker compose的使用
Compose简介 Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排.其代码目前在https://github.com/docker/compose 上开源. ...