QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 1024 MB Total points: 100

# 12039. 地主斗

Statistics

九条可怜是一个言出必行的女孩子,所以你会在这场比赛中看到这道题。在本题中,牌型和规则与传统的斗地主游戏类似但不完全相同,因为这题是两个地主之间的故事,因此我们称本题中的扑克游戏为地主斗。

一副扑克牌包含黑桃、红心、梅花、方片的 A 到 K 加上大小王,共 54 张牌。其中大小王各一张,其他数码牌各四张(分别对应四个花色)。在地主斗中,使用了两幅扑克牌,其中牌的大小关系根据牌的数码表示如下:

$$3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K < A < 2 < \text{小王} < \text{大王}$$

而花色并不对牌的大小产生影响。每一局游戏中,一副手牌由 $n$ 张牌组成。游戏者每次可以根据规定的牌型进行出牌,首先打光自己的手牌一方取得游戏的胜利。为了简化题目,本题不考虑花色的影响,即所有的相同的数码的牌都是被视为一样的

在这道题中,允许的出牌牌型有(这一部分与传统的斗地主有所出入,请注意):

名称 解释 举例
火箭 双王 ♂♀
炸弹 相同数码的四张牌 6666
单牌 单独的一张牌 6 单张的王也是单牌
对子 相同数码的两张牌 66 大小王不是对子
三张牌 相同数码的三张牌 666
三带一 相同数码的三张牌带上一张另外数码的单牌 666♂ 炸弹不是三带一
三带二 相同数码的三张牌带上一个另外数码的对子 66699
顺子 大小连续的 5 张及以上单牌 3456789 不能含有大小王和 2
连对 大小连续的 3 对及以上的对子 33445566 不能含有大小王和 2
三顺 大小连续的两组及以上的三张牌 333444555 不能含有大小王和 2
四带二 四张相同数码的牌带上两张单牌 444456 / 444455 注意不能带两个对子
飞机(单翅膀) 三顺带上相同数量的数码两两不同的单牌 33344455569J
飞机(双翅膀) 三顺带上相同数量的数码两两不同的对子 3334446699

注意:

  • 在牌型中没有连炸这种牌型,但是形如 444455556666 的牌仍然是能出的,它将被视为 444555666 带 456 的飞机(单翅膀)牌型。
  • 大王和小王数码不同,即飞机带大小王是合法的,例如 333444♂♀
  • 容易验证,上述牌型的规则是合法的,即对于任意合法的牌,它都有唯一的牌型。

两手牌是属于相同牌型的当且仅当他们的名称相同且包含牌的数量相同。相同牌型的牌之间存在着大小关系(火箭是唯一的,不需要比大小):

  • 三带一、三带二的大小取决于那三张相同牌的数码
  • 飞机的大小取决于三顺的大小
  • 四带二的大小取决于四张相同牌的大小
  • 其他牌型的大小取决于牌中的最大的一张牌

牌 $A$ 能在牌 $B$ 后面打出当且仅当满足下列三个条件中的至少一个:

  • $B$ 与 $A$ 牌型相同且 $B$ 的大小严格更大。
  • $A$ 不是炸弹但是 $B$ 是炸弹。
  • $A$ 不是火箭但是 $B$ 是火箭。

下面是对地主斗游戏过程的描述(这一部分与传统的斗地主有极大的区别,请注意):

  • 在地主斗中,有三个玩家,分别是一个提问者和两个地主,游戏需要两幅扑克牌。两个地主分别拥有 $20$ 张手牌,第一个地主的手牌来源于第一副扑克牌,第二个地主的手牌来源于第二副扑克牌。
  • 提问者可以向地主们提出若干个问题,每一次提问者报出一个任意牌型任意大小的牌 $A$,地主们需要回答自己手上的牌是否存在一个子集能在 $A$ 后打出,如果存在,回答 $1$ 否则回答 $0$。

    • 如果两个地主的答案不同,则回答 $1$ 的地主获胜。
    • 如果两个地主的答案相同,则提问者继续提问。

注意地主们在回答结束后,并不用打出手上的牌,即每一个地主手上的牌在提问的过程中都不会改变。

举例来说,如果第一个地主的手牌为 555666777JJJQQQAAA33,第二个地主的手牌为 33445566778899AAA222,则一个可能的游戏过程如下:

  • 提问者提问 ♂♀,两个地主都回答 0。
  • 提问者提问 3333,两个地主都回答 0。
  • 提问者提问 3334,两个地主都回答 1。
  • 提问者提问 QQQKKK♂♀,两个地主都回答 0。
  • 提问者提问 34567,第一个地主回答 0,第二个地主回答 1,第二个地主获胜。

容易发现,在一些情况下,无论提问者如何提问,两个地主的回答都是完全相同的,一个例子是两个地主的手牌完全相同时(当然还有其他的情况),我们称在这种情况下,两个地主达成了平手。

现在给出了两组牌,第一组牌数为 $n(0 \leq n \leq 20)$,第二组牌数为 $m(0 \leq m \leq 20)$,问地主斗游戏有多少种初始情况 $(A, B)$(其中 $A$ 表示第一个地主的手牌,$B$ 表示第二个地主的手牌),满足:

  • $A$ 包含第一组的 $n$ 张牌。
  • $B$ 包含第二组的 $m$ 张牌。
  • $A$ 和 $B$ 达成了平手。

输入格式

第一行第一个整数 $n(0 \leq n \leq 20)$,表示给出的第一组牌的数量。接下来 $n$ 个整数,描述了第一个地主包含的手牌。

第二行第一个整数 $m(0 \leq m \leq 20)$,表示给出的第二组牌的数量。接下来 $m$ 个整数,描述了第二个地主包含的手牌。

特别的,我们用 $1$ 来表示数码 A,$11$ 表示数码 J,$12$ 表示数码 Q,$13$ 表示数码 K,$14$ 表示小王,$15$ 表示大王。保证输入一定合法,即在两组牌中的任意一组中,每种牌的数量都不会超出一副扑克牌中牌的数量。

本题分为 $5$ 个子任务,你需要通过所有子任务中的所有测试点,才能拿到这个子任务的分数:

输出格式

输出一行一个整数,表示满足条件的初始情况 $(A, B)$ 的数量。答案可能很大,请对 $998244353$ 取模后输出。

注意,在这题中我们不考虑花色,如果两种情况的数码组成完全相同,但是花色不同,他们也是会被视为同一种的。

样例数据

样例 1 输入

20 5 5 5 6 6 6 7 7 7 11 11 11 12 12 12 1 1 1 3 3
20 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1 1 1 2 2 2

样例 1 输出

0

样例 2 输入

20 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1 1 1 2 2 2
20 3 3 4 4 5 5 6 6 7 7 8 8 9 9 11 11 11 2 2 2

样例 2 输出

1

样例 3 输入

4 3 4 5 6
4 7 8 9 10

样例 3 输出

787215587

子任务

  • 子任务一(13 分):$n,m \geq 18$
  • 子任务二(25 分):$n=20$
  • 子任务三(10 分):$n=m=0$
  • 子任务四(29 分):$n,m \geq 10$
  • 子任务五(23 分):$0 \leq n,m \leq 20$