#P16871. [GKS 2022 #A] Palindrome Free Strings

[GKS 2022 #A] Palindrome Free Strings

题目描述

给定一个由字符 01? 组成的字符串 SS。你可以将每个 ? 替换为 01。你的任务是判断是否可能为每个 ? 赋值为 01,使得最终得到的字符串中不包含长度大于等于 55 的回文子串。

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。

每个测试用例由两行组成。

每个测试用例的第一行包含一个整数 NN,表示字符串 SS 的长度。

每个测试用例的第二行包含一个长度为 NN 的字符串 SS

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yyPOSSIBLE(如果存在一种赋值方式使得最终字符串没有长度大于等于 55 的回文子串),否则为 IMPOSSIBLE

2
9
100???001
5
100??
Case #1: IMPOSSIBLE
Case #2: POSSIBLE

提示

在样例 #1 中,为了防止整个字符串成为回文,第一个和最后一个问号必须替换为不同的字符。

如果将第一个问号替换为 00,最后一个问号替换为 11,得到 1000?10011000?1001。如果剩下的 ? 替换为 11,得到 100011001100011001,此时前 55 个字符构成一个长度为 55 的回文。否则,得到 100001001100001001,前 66 个字符构成一个长度为 66 的回文。

如果将第一个问号替换为 11,得到 1001?00011001?0001。如果剩下的 ? 替换为 11,得到 100110001100110001,此时后 55 个字符构成一个长度为 55 的回文。否则,得到 100100001100100001,后 66 个字符构成一个长度为 66 的回文。

因此,无法得到合法字符串。

在样例 #2 中,一种将所有 ? 替换后得到的合法字符串是 1001110011

限制条件

1T1001 \le T \le 100

SS 仅由字符 01? 组成。

测试集 1

1N151 \le N \le 15

测试集 2

1N5×1041 \le N \le 5 \times 10^4

翻译由 DeepSeek V4 Pro 完成