#P13961. [ICPC 2023 Nanjing R] 华丽收场

[ICPC 2023 Nanjing R] 华丽收场

题目描述

在猪之国,《Slay the Pig》是当下最流行的肉鸽游戏。在游戏中,玩家们通过使用卡牌来对抗邪恶的土豆大魔王(Evil Potato Lord)。

游戏的主要规则如下:

  • 游戏开始时,玩家有一个起始手牌集合和一个自顶向下排列好的抽牌堆。
  • 在游戏的任意时刻,卡牌只会存在于玩家的手牌中或者抽牌堆里。
  • 玩家可以使用手牌中的卡牌,使用卡牌会先让该卡牌被丢弃,然后触发该卡牌的效果。
  • 玩家只有在上一张卡牌的所有效果都被触发完毕后,才可以使用下一张卡牌。

本题中,简单起见,我们只考虑抽牌这一种效果。 抽牌的规则如下:

  • 当使用可以抽牌的卡牌时,会按自顶向下的顺序将若干张卡牌从抽牌堆依次加入到手牌中。
  • 玩家有一个手牌数量上限 kk,任意时刻玩家的手牌数量不能超过 kk
  • 当玩家试图抽牌时,如果玩家此时的手牌数量已经为 kk,则不会将这张卡牌加入到手牌,而是将它直接从抽牌堆中丢弃,且不触发这张卡牌的任何效果。
  • 当玩家试图抽牌时,如果此时抽牌堆为空,则什么都不会发生。

在这个游戏中,以“华丽收场”这张卡牌为核心的卡组是最为强大的。因为一旦这张牌被使用,它会对所有敌人造成大量的伤害从而轻易地赢得游戏胜利。然而华丽收场也有着苛刻的使用条件,即使用时玩家的抽牌堆必须是空。也就是说,此时所有卡牌必须已经被使用,或被丢弃,或在玩家的手牌中。

鳖皇(Bie-Bot)是猪之国中仅次于 Mysterious Oscar 的最聪明的猪,他也在使用基于华丽收场的卡组。卡组由以下四种卡牌组成:

:::align{center} :::

  • 华丽收场(Grand Finale):游戏中最强大的卡牌, 保证有且仅有一张华丽收场在鳖皇的卡组中。这张卡仅能在抽牌堆为空时被打出。
  • 快斩(Quick Slash):使用这张卡之后可以从抽牌堆抽一张牌。
  • 后空翻(Backflip):使用这张卡之后可以从抽牌堆抽两张牌。
  • 伤口(Wound):一张状态牌,一旦这张牌在玩家的手牌中,就不能被使用。

在游戏开始时,鳖皇幸运地在他的起始手牌中获得了唯一一张华丽收场,并且鳖皇提前得知了他的抽牌堆自顶向下每一张牌分别是什么。现在,他的目标是成功使用华丽收场。 鳖皇想要知道,在最优策略下,达成目标所需的最小手牌数量上限 kk。 作为猪之国第三聪明的玩家,您能帮帮鳖皇吗?

更正式地,给定一个长度为 nn 的字符串 SHS_{H} 表示鳖皇的起始手牌,和一个长度为 mm 的字符串 SPS_{P} 自顶向下地表示鳖皇的抽牌堆。 这两个字符串均由大写字母 G, Q, BW 组成,分别表示起始手牌或抽牌堆对应位置的卡牌为华丽收场,快斩,后空翻和伤口。 鳖皇可以根据前文提到的规则使用这些卡牌。 请输出鳖皇最终能成功使用华丽收场所需的最小手牌数量上限 kkknk \geq n),或者声明不存在这样的 kk

输入格式

有多组测试数据。第一行输入一个整数 TT 表示测试数据组数,对于每组测试数据:

第一行输入两个整数 nnmm1n,m25001 \leq n, m \leq 2500)表示鳖皇的起始手牌数量以及抽牌堆的卡牌的数量。

第二行输入一个长度为 nn 的字符串 SHS_{H} 表示鳖皇的起始手牌。字符串由大写字母 GQBW 组成。保证字符 G 仅在字符串 SHS_{H} 中出现一次。

第三行输入一个长度为 mm 的字符串 SPS_{P} 自顶向下地表示鳖皇抽牌堆。字符串由大写字母 QBW 组成。

保证所有数据 (n+m)(n + m) 之和不超过 5×1045 \times 10^4

输出格式

每组数据输出一行一个整数,表示成功使用华丽收场需要的最小手牌数量上限 kkknk \geq n)。如果无法使用华丽收场,输出 IMPOSSIBLE\texttt{IMPOSSIBLE}

2
2 6
BG
BQWBWW
4 6
GQBW
WWWWQB
3
IMPOSSIBLE

提示

以下使用“手牌/抽牌堆”字符串表示当前状况。对于第一组测试数据,一种可行的最优策略是:

  • BG/BQWBWW B\overset{B}{\longrightarrow} BQG/WBWW
  • BQG/WBWW Q\overset{Q}{\longrightarrow} BWG/BWW
  • BWG/BWW B\overset{B}{\longrightarrow} BWG/W(抽牌过程中会移除一个 `W',因为此时手牌上限已满)
  • BWG/W B\overset{B}{\longrightarrow} WWG/\emptyset(只会抽取一个 `W' 因为抽取第二张牌时抽牌堆为空)
  • WWG/\emptyset G\overset{G}{\longrightarrow} 成功使用华丽收场!