算法
看完题目不好想到思路
逆向思维, 考虑从目标串刷成一个由全部相等的颜色组成的串
由于一刷刷一堆想到区间
状态
设 \(dp_{l, r}\) 表示区间 \([l, r]\) 的最少涂抹次数
状态转移
分类讨论
- \(S_l = S_r \text{ 且 } l < r\)
此时分别去掉两个端点, 观察发现
设覆盖了 \(l\) 的唯一一次染色的右端点是 \(x\)
我们把这次染色的右端点改成 \(r\) ,并且把所有在 \([x + 1, r]\) 上进行的染色保持原来的顺序挪到这次染色之后,这样我们在不改变步数的情况下从一个对
\([l,r−1]\) 染色的方案得到了一个对 \([l,r]\) 染色的方案。故
- \(S_l \neq S_r \text{ 且 } l < r\)
显然为区间分割
代码
本题为 ctj
总结
善于利用逆向思维
寻找特殊性质
注意分类的不重不漏