QOJ.ac

QOJ

Limite de temps : 2.0 s Limite de mémoire : 512 MB Points totaux : 100 Hackable ✓

#10206. 不朽的……宇宙

Statistiques

时光飞逝,日子一天天过去,游戏终于结束了。Rikka 在你的帮助下从未喝过酒,所以她依然是一位名誉良好的日本公民。

红白优雅地离开了。突然,Rikka 意识到白方玩家是 LCR 而不是任何长者——或者说 LCR 就是那个人。她永远不会知道为什么她没能理解这一点。Rikka 追了上去,但在穿过迷雾时迷了路。

宇宙飞船在天空中进行着史诗般的航行,一排排道路和建筑物形成了同心圆,让人想起祭坛或八卦。在迷雾的尽头,一幅神圣而不可思议的景象出现在她面前。那颗巨大的圆形行星很快吸引了她——地球,人类的家园,像一块巨大的月饼一样悬挂着。多么壮观的月球大都市!

Rikka 发现自己站在证券交易所前。一个男孩正盯着屏幕,敲击着键盘,吸引了她的目光。

有两种类型的股票。它们都由财团控制,因此它们的趋势是既定的。

每种类型的股票都可以分为若干阶段,这些阶段将按顺序进行。一种类型有 $n$ 个阶段,另一种有 $m$ 个阶段。在每个阶段,人们会获得或损失一个单位的钱。男孩起初只有一个单位的钱,他每天必须处理一种任意类型的阶段(除非该类型的所有阶段都已处理完毕,如果是这样,则处理另一种类型)。在 $(n + m)$ 天后,所有交易结束,他最终将得到他的钱。

这个可怜的男孩什么都不知道,无法做出决定,所以他随机选择。然而,在无数次破产之后,他获得了一种敏锐的直觉:如果他只有一单位的钱,他就会知道所有可用阶段的结果。当且仅当他能立即选择某个阶段时,该阶段才是可用的。在这种情况下,除非所有可用的类型都会导致他亏钱,否则他永远不会选择会导致他亏钱的类型。但如果他至少有两单位的钱,他会忽略任何已知信息并随机选择,因为他有回旋余地。他必须每天进行处理,并且在所有交易完成之前不能退出,因为他只能在 $(n + m)$ 天后拿到现金。

每当他的钱用完时,他就会破产。如果他只有一单位的钱,并且每种可用类型(至少有一个阶段未处理)在接下来的阶段中都可能导致他亏钱,那么他就会破产。

当然,心地善良的女孩会尽力帮助他。她在之前得到的代码中发现了一些奇怪的东西。那是来自财团的文件的哈希值!

不久之后,Rikka 得到了两个长度分别为 $n$ 和 $m$ 的字符串。每个字符串包含三种类型的字符“P”、“V”和“?”,分别表示相应的阶段可能导致亏损、获利或未知。然而,男孩不相信她。

Rikka 很焦虑。她想知道,根据她的信息,有多少种可能的趋势永远不会导致他破产,结果对 998244353 取模。

一种可能的趋势可以用两个长度分别为 $n$ 和 $m$ 的仅包含“P”和“V”的字符串来描述,它们可以通过将 Rikka 字符串中的每个“?”替换为“P”或“V”来获得。当且仅当无论他每次如何选择,他都永远不会破产时,该趋势才永远不会导致破产。

输入格式

第一行包含一个长度为 $n$ 的字符串 $s$ ($1 \le n \le 5000$),仅由“P”、“V”和“?”组成。 第二行包含一个长度为 $m$ 的字符串 $t$ ($1 \le m \le 5000$),仅由“P”、“V”和“?”组成。 $s$ 和 $t$ 构成了 Rikka 的信息。

输出格式

输出一个整数,表示永远不会导致男孩破产的可能趋势数量,对 998244353 取模。

样例

输入 1

PV
??

输出 1

1

输入 2

???
P?P

输出 2

3

输入 3

?????
?????

输出 3

326

说明

在第一个样例中,有 4 种将“?”替换为“P”或“V”的方法,如下所示:

  • “PV”和“PP”:男孩别无选择,只能在第一天输掉他所有的钱。
  • “VV”:在第一天,由于男孩只有一单位的钱,为了避免破产,他会选择第二种类型,因此在第二天开始时,他手中有两单位的钱。他不可能破产,因为只剩下一个“P”。
  • “VP”:在第一天,男孩只能选择第二种类型。但在第二天,两种类型都可以选择。如果他选择第二种类型,他将不得不在第三天选择第一种类型,然后他就会破产。

由于只有“VV”永远不会导致男孩破产,因此第一个样例的答案应该是 1。

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.