CF1132F Clear the String
Description
给你一个串 \(s\),每次可以花费 \(1\) 的代价删去一个子串,要求子串的每一位为同一个字符。
求删去整个串的最小代价。 \(1\leq|s|\leq 500\)
Solution
居然不会了!
发现状态的转移不止与当前区间的端点有关,而且和中间颜色相同的也有关。所以必须枚举中间节点进行转移。
考虑 \(dp[l][r]\) 表示删完 \([l,r]\) 的最小代价。有转移
\[dp[l][r]=min(dp[l][k]+dp[k+1][r-1]+[s_k\neq s_r])
\]
这样实际上就是同时考虑了中间相同颜色的一起删和分开删的情况。