POJ - 2912 Rochambeau (种类并查集+枚举)

此博客介绍了如何使用种类并查集和枚举策略解决POJ 2912 Rochambeau问题。内容涉及N人玩剪刀石头布,其中一人可能出任意手势,目标是找出这名特殊玩家。通过枚举每个人为特殊人的情况,并判断是否有人乱出手势,最终确定特殊人的身份和最小确定轮数。
摘要由CSDN通过智能技术生成

Rochambeau
题意:
N个人玩剪刀石头布,每个人都只会出固定的一种,所以一共会有3种人,但是这群人里有一个人搞特殊,他能随便出,请找出他

思路:
枚举每一个人是特殊人的情况,如果排除这个假定的特殊人之后没人再乱出搞事情,那他就有可能是特殊人,把他保存下来。

  1. 如果最后一个特殊人也没找到,说明有不止一个人在乱搞,输出"Impossible";
  2. 如果最后找到好几个特殊人,说明没人在乱出搞事情,不确定谁是特殊人,输出"Can not determine";
  3. 如果最后只找到一个特殊人,就说明真正的特殊人就是找到的这个人,而能够确定的最小轮数则是在假定其他人是特殊人时判断出有人在搞事情时的最大轮数(因为此时才能确定其余的人都不是特殊人)

注意:枚举每一个人时都要重新初始化

代码附:

#include<cstdio>
#include<stack>
#include<cstring>
using namespace std;
int n,m,when=0;
int fa[510],ra[510],vis[510];
struct mes
{
   
    int a,b,c;
} pep[2020];
stack<int>may;
void init()
{
   
    memset(ra,0,sizeof(ra));
    memset(vis,0,sizeof(vis));
    for(int i=0; i<n
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值