zoukankan      html  css  js  c++  java
  • 【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;
    }
    
  • 相关阅读:
    批处理命令之实现修改环境变量的值
    【hihocoder 1304】搜索一·24点
    【hihocoder 1297】数论四·扩展欧几里德
    【hihocoder 1298】 数论五·欧拉函数
    【hihocoder 1303】模线性方程组
    C语言如何动态分配二维数组
    Istream中的函数
    string 与 char * 转换
    boost 系列 1:boost 直接使用
    glog功能介绍 一分钟 51CTO技术博客
  • 原文地址:https://www.cnblogs.com/chenxiaoran666/p/ECNU71.html
Copyright © 2011-2022 走看看