ARC059F Unhappy Hacking
Description
https://www.luogu.com.cn/problem/AT_arc059_d
Solution
贡献用到了再算,或者删除的时候再算贡献 的想法一定要记住!!!
显然有一种天真的 $O(n^3)$ 的 dp。但是过不了。
注意到根本不需要知道 $s$ 这个字符串里面是什么。令 $f_{i,j}$ 表示按了 $i$ 个按键,匹配到 $j$ 个位置。
- 如果按下了 0/1,则有 $f_{i,j}\gets f_{i-1,j-1}$
- 如果按下了删除键,则我们不关心被删除的那个位置原来是什么,0/1 都可以,有 $f_{i,j}\gets 2\times f_{i-1,j+1}$
- $f_{i,0}\gets f_{i-1,0}$。
复杂度 $O(n^2)$。
1 | string s; |