简要题意:
给定一个长为 n n n 的字符串 s s s,求至少插入多少个字符能使得 s s s 变成回文串。
n ≤ 1 0 3 n \leq 10^3 n≤103.
IOI2000 \text{IOI2000} IOI2000 签到题,可以仔细看一下。
这题个人用的区间 dp \text{dp} dp 很有思考价值。
可以思考一下:答案最大为 n n n.显然直接把 rev ( s ) \text{rev}(s) rev(s) 加到 s s s 后面就行( rev \text{rev} rev 表示翻转后的串),这样是 n n n 个字符。
但是显然,对于 rev ( s ) \text{rev}(s) rev(s) 和 s s s 中,相同的序列(序列不连续)可以选择跳过。就比方说, s = s= s= ab3bd
, rev ( s ) = \text{rev}(s) = rev(s)= db3ba
,你会发现: