思路:设 fi 为以第 i 位开头的可消除串个数,gi 为从第 i 位开始最短可消除串的结尾位置,那么 fi=fgi+1+1
主要问题是求 gi,最短可消除串一定是一个回文串,从后往前枚举每一个间隔作为回文串中心,二分 + 哈希判断最长回文串长度(更新最多的点),然后线段树推平更新
比如 abba,第二个分隔得到回文串 abba,将 1-2 的值更新为 2(全部更新为分割点的值,方便更新,最小分割点可以反应最小结束点)最后能计算出来 g1=4,g2=3
交上去 WA 25.
楼下代码