这东西去年就看了,但是感觉理解的不是很深刻。今年再来加深一下理解吧!虽然可能这辈子不会再用到了。
先看一个题吧:CF1132F
没什么分析的必要,直接给个转移方程吧。
\[\begin{cases} f_{i,i}=1\\ f_{l,r}=\min(f_{l+1,r},f_{l,r-1})&s_l=s_r\\ f_{l,r}=\min\limits_{l\le k<r}f_{l,k}+f_{k+1,r} \end{cases} \]没啥难理解的。不过现在让我们深度(能有多深?)思考一下。这个题之所以可以有第二条转移,恒为 \(1\) 的代价是关键的。我们每次可以直接不考虑相同的一个端点,让这个贡献只在另一个端点处计算就好了。那么我们加强一下,代价与每次删除的长度呈函数关系。这样一来,第二条转移就不成立了。因为要计算贡献,仅仅知道“有”是不够的,还得知道“有多长”。这引出了今天的主角。