T1:
其实就是个模拟。。。
细节蛮多的
T2:
统计一下f[i],g[i]分别表示以i为右端点/左端点的回文串的个数,(ans=sum f[i]*g[i+1])
manacher跑一下,然后差分的加一下等差数列就行了
T3:
对于(w_{i,j} + w_{j,i})建一个点,
对于每个位置建一个点,代价为 (−a)
对于每个字符建一个点,代价为 (−b + a)
一类点连向二类点,二类点连向三类点
最大权闭合图
T1:
其实就是个模拟。。。
细节蛮多的
T2:
统计一下f[i],g[i]分别表示以i为右端点/左端点的回文串的个数,(ans=sum f[i]*g[i+1])
manacher跑一下,然后差分的加一下等差数列就行了
T3:
对于(w_{i,j} + w_{j,i})建一个点,
对于每个位置建一个点,代价为 (−a)
对于每个字符建一个点,代价为 (−b + a)
一类点连向二类点,二类点连向三类点
最大权闭合图