#21824. 纸牌桌游(uno)
纸牌桌游(uno)
说明
蒟蒻队长最近很喜欢玩一种桌游卡牌——$UNO$这种卡牌共分四种颜色:红色、绿色、蓝色及黄色,每种颜色各有写着 $0−9$ 的数字牌和功能牌:`skip`(跳牌)、`reverse`(反转牌),还有一种没有颜色的功能牌:`change`(转色牌)
功能牌的功能分别如下:
1. `skip`(跳牌):跳过下一个人的出牌,由下家的下家打出下一张牌
2. `reverse`(反转牌):将原本顺时针的出牌顺序变为逆时针,或相反,并由变化后的下家(原来的上家)打出下一张牌
3. `change`(转色牌):无论上一张牌是什么牌都可以打出转色牌,且打出后出牌者可以决定下家应出哪种颜色的牌,此时对下家来说,上家的牌只有颜色,没有数字
现在蒟蒻队长邀请了小菜菜和黄老师一起来玩 $UNO$
一开始,每人从牌堆抽出 $N$ 张牌,由蒟蒻队长第一个出牌,并且出牌顺序也由蒟蒻队长决定(即蒟蒻队长可以选择按照 `蒟蒻队长,小菜菜,黄老师` 的顺序,还是按照 `蒟蒻队长,黄老师,小菜菜` 的顺序出牌)
蒟蒻队长可以将任意牌作为第一张牌打出,接下来所有人出牌遵守出牌规则:
1. 规定顺序轮流出牌,每轮必须打出一张牌且只能出一张牌,若手上无符合规则的手牌可出,则判定游戏失败
2. 若打出的不是 `转色牌`,则所打出的牌要么 `颜色` 与 `上一张牌` 相同,要么 `数字` 与 `上一张牌` 相同(数字牌),要么 `功能` 与上一张牌相同(功能牌)
3. 若打出的是功能牌,执行对应功能
4. 第一个打完手牌的人获胜
5. 若最后三个人能够接连打出手里最后一张牌,则共同获胜
现在蒟蒻队长知道三人手里的牌分别是什么,他想知道能否商量出一种出牌方案使得三人共同获胜?
输入格式
本题采用多组测试数据输入第一行包含一个整数 表示测试数据数量
对于每组测试数据:
第一行输入一个整数 表示三人一开始的手牌数量
接下来三行,分别表述蒟蒻队长,小菜菜,黄老师的手牌
每行包含 个数,每两个数 描述一张牌
1. 分别表示红黄蓝绿四种颜色
2. 表示的是该牌的数值,若 表示跳牌, 表示反转牌
3. 表示该牌为转色牌,此时的 无意义
| 测试点编号 | $N$ | 特殊性质 |
|---|---|---|
| $1 \sim 2$ | $N=1$ | 无 |
| $3 \sim 4$ | $1 \leq N \leq 6$ | 没有功能牌 |
| $5 \sim 6$ | $1 \leq N \leq 6$ | 只有数字牌和转色牌 |
| $7 \sim 10$ | $1 \leq N \leq 6$ | 无 |
对于所有测试数据有:
输出格式
对于每组测试数据,如果有至少一种方案能够让三个人共同获得胜利,则输出 "Yes!",否则输出 "No!"3
1
0 10
0 11
0 0
1
0 1
1 10
0 11
3
0 10 2 0 3 11
2 10 3 0 1 0
1 10 3 1 4 0Yes!
No!
Yes!
提示
对于第一组数据:蒟蒻队长定义顺序为:蒟蒻队长,小菜菜,黄老师
蒟蒻队长打出跳牌,跳过小菜菜,此时蒟蒻队长获得胜利
黄老师打出红色$0$,此时黄老师获得胜利,因为蒟蒻队长已经胜利,所以下一个轮到小菜菜
小菜菜打出反转牌,此时小菜菜获得胜利
该方案可以让三人依次打出手里最后一张牌
对于第二组数据:
不管怎么打小菜菜都打不出他的牌