QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#17757. 卡片检查

Statistics

你将解决一个与扑克游戏“斗地主”相关的问题。

游戏介绍

“斗地主”是一种由三名玩家轮流出牌的纸牌游戏。设这三名玩家分别为 A、B 和 C。每位玩家手里持有若干张牌,游戏持续进行,直到某位玩家出完所有的牌。

玩家 A 和 B 属于农民阵营。如果 A 或 B 中任意一人出完了所有的牌,则农民获胜。玩家 C 独自组成地主阵营,如果 C 出完了所有的牌,则地主获胜。

出牌规则

在本题中,每张牌上都写有一个在 $[1, n]$ 范围内的整数,称为牌的点数。牌的点数按升序排列:$1, 2, \dots, n$。

本题中只允许以下两种牌型:

  • 单张:任意单张牌。
  • 对子:两张点数相同的牌。

与通常的斗地主游戏不同,在本题中,玩家只有在手牌中恰好只有一张该点数的牌时,才能出该点数的单张牌。换句话说,手牌中的对子不能拆开作为两张单张牌打出。

在每一轮出牌中,都会有一名玩家作为该轮的领出玩家。领出玩家首先行动,可以打出任意合法的牌型。然后,从下一名玩家开始,玩家按顺序轮流出牌。在轮到每位玩家时,他们可以做出以下两种决策之一:

  • 打出与本轮最后一次打出的牌型相同,且点数严格更大的牌型。
  • 选择过牌(pass)。

在一名玩家出牌后,如果其他两名玩家都连续选择过牌,则当前轮结束。此时,最后一次成功出牌的玩家成为下一轮的领出玩家。然后开始新的一轮。

题目描述

在本题中,考虑以下情况:

  • 地主 C 只剩下一张牌,点数为 $p_c$。
  • 两名农民 A 和 B 的手牌由两个长度为 $n$ 的字符串 $s_a$ 和 $s_b$ 描述,字符串仅由字符 012 组成。这里,第 $i$ 个字符表示对应玩家持有的点数为 $i$ 的牌的数量。

所有玩家的手牌都是公开信息;也就是说,每位玩家在做出决策时都知道所有玩家持有的确切手牌。玩家 A 是第一轮的领出玩家,且三名玩家总是按照 $A \to B \to C \to A \to \dots$ 的顺序轮流出牌。你需要确定在所有玩家都采取最优策略的情况下,农民阵营是否能够获胜。

输入格式

每个测试点包含多组测试数据。输入的第一行包含一个整数 $T$($1 \le T \le 10^5$),表示测试数据的组数。对于每组测试数据:

第一行包含一个整数 $n$($1 \le n \le 2.5 \times 10^5$)。

第二行包含一个长度为 $n$ 的字符串 $s_a$,仅由 012 组成,表示农民 A 的手牌。

第三行包含一个长度为 $n$ 的字符串 $s_b$,仅由 012 组成,表示农民 B 的手牌。

第四行包含一个整数 $p_c$($1 \le p_c \le n$),表示地主 C 唯一一张牌的点数。

保证每位玩家至少持有一张牌。

同时保证所有测试数据的 $n$ 之和不超过 $10^6$。

输出格式

对于每组测试数据,输出一行。如果农民阵营可以获胜,输出 Yes;否则,输出 No

样例

输入样例 1

4
9
001110201
002110211
7
9
110200000
222000000
7
9
222000000
110000000
7
9
111000002
111000210
7

输出样例 1

Yes
No
Yes
No

说明

我们对第一组样例数据进行解释。

# A B C 出牌过程
1 3,4,5,7,7,9 3,3,4,5,7,7,8,9 7 A (3) $\to$ B (8) $\to$ C (pass) $\to$ A (9) $\to$ B (pass) $\to$ C (pass)
2 4,5,7,7 3,3,4,5,7,7,9 7 A (4) $\to$ B (9) $\to$ C (pass) $\to$ A (pass)
3 5,7,7 3,3,4,5,7,7 7 B (3,3) $\to$ C (pass) $\to$ A (7,7) $\to$ B (pass) $\to$ C (pass)
4 5 4,5,7,7 7 A (5)

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.