【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

时间: 2024-11-12 14:56:59

【ECNU71】一个游戏(水题)的相关文章

201512-2 消除类游戏 (水题,暴力)

问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除.当有多处可以被消除时,这些地方的棋子将同时被消除. 现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘. 请注意:一个棋子可能在某一行和某一列同时被消除. 输入格式 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数. 接下来n行,每行m个

hpu 1701 最后一个1 &lt;水题&gt;

1710: 最后一个1 时间限制: 1 Sec  内存限制: 128 MB 提交: 51  解决: 32 [提交][状态][讨论版] 题目描述 对于一个十进制的数字x,将他转化为2进制,他的2进制将由0和1组成,求里面的最后一个1在第几位 输入 第一行输入T,代表T组数据, 接下来T行,每行输入一个X. 0<T<1e7 0<X<1e9 输出 输入x的2进制中最后一个1在第几位, 不存在输出0 样例输入 3 0 3 8 样例输出 0 2 1 提示 来源 思路:就是先二进制的总长度,和

Codeforces-Translation(水题)

The translation from the Berland language into the Birland language is not an easy task. Those languages are very similar: a berlandish word differs from a birlandish word with the same meaning a little: it is spelled (and pronounced) reversely. For

Iroha and a Grid AtCoder - 1974(思维水题)

就是一个组合数水题 偷个图 去掉阴影部分  把整个图看成上下两个矩形 对于上面的矩形求出起点到每个绿点的方案 对于下面的矩形 求出每个绿点到终点的方案 上下两个绿点的方案相乘后相加 就是了 想想为什么 #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #include <map> #include <cctype> #include

[Usaco2008 Feb]Line连线游戏[暴力][水题]

Description Farmer John最近发明了一个游戏,来考验自命不凡的贝茜.游戏开始的时 候,FJ会给贝茜一块画着N (2 <= N <= 200)个不重合的点的木板,其中第i个点 的横.纵坐标分别为X_i和Y_i (-1,000 <= X_i <=1,000: -1,000 <= Y_i <= 1,000). 贝茜可以选两个点画一条过它们的直线,当且仅当平面上不存在与画出直线 平行的直线.游戏结束时贝茜的得分,就是她画出的直线的总条数.为了在游戏 中胜出,

poj水题-1001 一个简单的大数乘幂算法实现

说到底就是一个大数乘幂运算,小数点后零.明白大数乘幂算法直接搞. 这里就有几个问题: 1.幂位数小可以用二进制容器表示(取模更好,但我是为了练习STL) 2.n位大数用string表示,外加一个int型表示小数点位置 3.字符串×字符串用小学竖式乘法算法就行,注意补零.位数多时两个string两个string地加. 代码长,但理解容易,大数乘法,加法函数很多都能重用. 1 #include <iostream> 2 #include <vector> 3 #include <

1503171912-ny-一道水题

一道水题 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 今天LZQ在玩一种小游戏,可是这游戏数有一点点的大,他一个人玩的累.想多拉一些人进来帮帮他.你能写一个程序帮帮他吗?这个游戏是这种:有一行数字,假设我们把这行数字中的'5'都看成空格,那么就得到一行用空格切割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整数就是由若干个'0'组成的,这时这个整数就是0). 你的任务是:对这些切割得到的整数,依从小到大的顺序排序输出,大家赶

POJ百道水题列表

以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations 1221 Risk1230 Legendary Pokemon1249 Pushing Boxes 1364 Machine Schedule1368 BOAT1406 Jungle Roads1411 Annive

hdu 1846 Brave Game (巴什博弈 最简单的博弈水题)

Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6434    Accepted Submission(s): 4294 Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分