CF374C Inna and Dima
题目描述
Inna 和 Dima 在商店买了一个 $n \times m$ 的桌子。桌子的每个格子中都写着一个单独的字母:“D”、“I”、“M”、“A”中的某一个。
Inna 很爱 Dima,所以她希望在桌子上移动时能尽可能多地拼出他的名字。因此,Inna 这样行动:
1. 首先,Inna 可以选择桌子上任意一个写有字母 “D” 的格子作为起点;
2. 然后,Inna 可以移动到与当前格子相邻且写有字母 “I” 的格子;然后再移动到相邻且写有字母 “M” 的格子;再移动到相邻且写有字母 “A” 的格子。此时,Inna 就算成功拼写了一次喜欢人的名字;
3. 下一步,Inna 可以从与当前格子相邻且写有字母 “D” 的格子再继续重复拼写 “DIMA”。Inna 不能跳过任何字母。因此,她只能按顺序从 “D” 移动到 “I”,从 “I” 到 “M”,从 “M” 到 “A”,从 “A” 再到 “D”。
根据初始位置的选择,Inna 可能能无限多次,有限多次,或者一次都不能完整地拼写出名字 “DIMA”。请你帮 Inna 计算,在桌子上最多能完整拼写多少次 “DIMA”。
输入格式
输入的第一行为两个正整数 $n$ 和 $m$,满足 $1 \leq n, m \leq 10^3$。
接下来 $n$ 行描述桌子的字符分布。每行包含 $m$ 个字符,每个字符为大写字母 “D”、“I”、“M”、“A” 中的某一个。
注意,桌面上不保证一定存在字母 “D”。
输出格式
如果 Inna 一次都无法拼写出 “DIMA”,输出一行 “Poor Dima!”(不带引号)。
如果 Inna 可以无限次拼写 “DIMA”,输出一行 “Poor Inna!”(不带引号)。
否则,输出 Inna 最多能完整拼写 “DIMA” 的最大次数。
说明/提示
样例说明:
在第一个样例中,Inna 一次都无法完整拼写 “DIMA”。
在第二个样例中,Inna 可以无限次拼写 “DIMA”。为此,她只需从右下角顺时针绕圈走即可。
在第三个样例中,最优策略是从左上角的格子出发。在这个格子出发,Inna 最多可以完整拼写 “DIMA” 四次。
由 ChatGPT 5 翻译