Unique Palindromes
可以就看官方解答,写的比较清楚
这个引理好像比较重要,可以记住,看看洛谷题解的思路
说下官方解答最后一段的意思:这么做就可以保证不会因为添加\(a,b,c\)三个字母中的某一个字母而产生回文串,比如添加\(a\),添加的地方前面是\(c\)(或"a symbol that wasn't used"),而在之前的\(a\)后面是\(b\),显然不可能是回文串
update 2024.9.7
首先观察样例,发现从YES
的样例中暂时看不出来什么,于是先看NO
的样例,尝试找出不行的条件
观察倒数第三个样例(因为只有一个限制,比最后一个样例简单)猜测引理。引理的证明确实有难度,对回文串的性质的了解也要有所提升,如下图
假设原串是一个回文串,那么绿色串翻转过来就等于橙色串(尽管两个串的长度超过了原串的一半)
然后对于证明出来的引理的上下界,我们尝试构造。这个时候观察YES
的样例,会发现很多像abc
的这种构造,于是不难构造出\(P=3\)的字符串;观察第二个样例,也不难构造出\(P=n\)的字符串;然后尝试以这两种字符串为原型去构造整个字符串即可