Manacher 2
校内模拟赛的题面就直接放了
T1(多校5T3)

首先Manacher预处理所有的回文串,然后把中心转成首字母
考虑快速查询,注意到串长是\(5e3\)的,空间限制是4倍单位空间(即\(512MB\))
所以完全可以二维数组下标记录左右端点,存答案
用\(f[i][j]\)表示\(i\)到\(j\)这一个子串的回文子串数 ,
那么\(f[i][j]=f[i+1][j]+f[i][j-1]-f[i+1][j-1]+g[i][j]\)。
再处理一下边界情况就好。
复杂度$ O(n^2+T)$。
T2 (多校4T3)
Manacher找到最长回文串
然后就是区间合并的最小次数
我想了一个单调队列做法但是crs_line说直接贪
单调队列DP:\(f[i]=min(f[j])+1,j\in g[i],g[i]\)表示回文区间
贪心:记录最靠右的决策,到达终点时合并更新
%%%crs_line

浙公网安备 33010602011771号