CF1949D Funny or Scary?

题目描述

你正在设计一款新的电子游戏。它有 $n$ 个场景,玩家可以按任何顺序游玩,但每个场景只玩一次。当玩家从一个场景切换到另一个场景时,游戏会显示一个过渡视频,让玩家感觉这一切都是故事的一部分。该视频特定于一对场景,但不按其顺序,也就是说,从场景 $a$ 切换到场景 $b$ 时播放的视频与从场景 $b$ 切换到场景 $a$ 时播放的相同。因此,您需要创建 $\frac{n(n-1)}{2}$ 个不同的过渡视频,每对不同场景都有一个。 每个过渡视频可以是有趣的,也可以是恐怖的。连续看太多有趣的视频或太多恐怖的视频会很无聊。因此,你的目标是以这样一种方式创建视频:无论玩家以何种顺序处理场景,他们都不会连续看到超过 $\lceil\frac{3n}{4}\rceil$ 的相同类型的过渡视频。 您已经为最多 $\lfloor \frac{n}{2} \rfloor$ 个的过渡视频想出了主意,因此你已经知道这些视频是有趣还是可怕了。现在,你需要为所有剩余的过渡视频选择有趣或恐怖的视频,以满足上述要求。

输入格式

第一行包含一个整数 $ n $ ( $ 2 \le n \le 24 $ ) ——游戏中场景的数量。 接下来的 $n$ 行描述部分过渡视频的计划。 每一行都包含 $n$ 个字符。第 $i$ 行的第 $j$ 个字符对应于第 $i$ 个和第 $j$ 个场景之间的转换视频。如果相应的过渡视频会很有趣,则为 F,如果相应的转换视频会很恐怖,则为 S。如果对应的转换视频仍然是未决定的,或者如果 $i=j$,则为 ?。 保证第 $j$ 行的第 $i$ 个字符和第 $i$ 行的第 $j$ 个字符对于所有 $i$ 和 $j$ 都是相同的。最多 $ \lfloor \frac{n}{2} \rfloor $($n$除以2,四舍五入)个转换视频将已经被决定,换句话说,输入中最多 $ 2\lfloor \frac{n}{2} \rfloor $ 个字符将是 F 或 S。

输出格式

以与输入相同的格式输出描述完整过渡视频计划的 $n$ 行。每一行都必须包含 $n$ 个字符。如果相应的过渡视频是有趣的,第 $i$ 行的第 $j$ 个字符是 F,如果相应的转换视频是恐怖的,或者如果 $i=j$,第 $i$ 行的第 $j$ 个字符是 S。 每个输入中的 ? 字符必须替换为 F 或 S,并且输入时的所有 F 或 S 必须与输入时保持不变。它必须仍然保持第 $j$ 行的第 $i$ 个字符和第$i$ 行的第 $j$ 个字符对于所有 $i$ 和 $j$ 都是相同的。 对于 $n$ 个场景的每一个排列,必须确保按此顺序播放与场景相对应的转换视频连续不超过相同类型的 $ \lceil \frac{3n}{4} \rceil $ ($3n$除以4,四舍五入)个视频。 如果有多个解决方案,请输出其中任何一个。保证对于满足该问题的所有输入均有解。

说明/提示

In the first sample: We are allowed $ \lceil \frac{3\cdot 5}{4} \rceil=4 $ transition videos of the same type in a row, but for any permutation of the 5 scenarios the player will see only 4 transition videos in total, therefore we can choose funny or scary freely. We must still respect the already chosen types. In the second sample: One of the 479001600 possible permutations of scenarios is 1, 7, 4, 12, 9, 8, 2, 6, 10, 3, 11, 5. The player will get the following sequence of transition videos for this permutation: SSSSSSSSSFS. Even though this sequence has 10 scary transition videos in total, it has only 9 scary transition videos in a row, which is the maximum allowed amount ( $ \lceil \frac{3\cdot 12}{4} \rceil=9 $ ).