【ECNU71】一个游戏(水题)

点此看题面

大致题意: \(n\)种元素,有若干组将\(x\)元素转化为\(y\)元素的操作。问对于所有可能的元素拥有状况,改变转化操作的顺序,是否会影响转化后最终的结果。

水题

虽说是这么水的题,但毕竟还是模拟赛题,所以照例写一下题解吧。。。

首先,若对于两组转化操作\((a,b),(c,d)\)\(a,b,c,d\)各不相同,显然它们是互不影响的。

否则,我们分下面几类考虑:

  • \((a,b),(a,c)\),显然,先\((a,b)\)\(a\)会变成\(b\),先\((a,c)\)\(a\)会变成\(c\),是有影响的。
  • \((a,b),(b,c)\),显然,先\((a,b)\)\(a\)最终会变成\(c\),先\((b,c)\)\(a\)最终仍是\(b\),是有影响的。
  • \((a,b),(c,b)\),无论先哪一个,最终\(a,c\)都会变成\(b\),无影响。

总结一下,我们先把所有转化操作去重。

然后,枚举每一个转化关系\((x,y)\),若\(x\)在之前某个转化操作中出现过,或\(y\)在之前某个转化关系前一项出现过,就说明会影响结果。

代码

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define V 100
using namespace std;
int n,sx[V+5],sy[V+5],vis[V+5][V+5];
int main()
{
    RI Tt,i,x,y,f;scanf("%d",&Tt);W(Tt--)
    {
        memset(sx,0,sizeof(sx)),memset(sy,0,sizeof(sy)),memset(vis,0,sizeof(vis));//清空
        for(scanf("%d",&n),f=i=1;i<=n;++i)
            scanf("%d%d",&x,&y),!vis[x][y]&&(sx[x]||sx[y]||sy[x])&&(f=0),sx[x]=sy[y]=vis[x][y]=1;//读入,去重后判断
        puts(f?"Lucky dxw!":"Poor dxw!");//输出答案
    }return 0;
}

转载于:https://www.cnblogs.com/chenxiaoran666/p/ECNU71.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值