区间DP

母题

\(f[i,j]\) 表示区间内的信息。

考虑转移就是 \(f[i,j]=f[i,k]+f[k+1][j]+merge([i,k],[k+1,j])\)merge 可以用前缀和。

1

考虑若两端点相等,那么可以连着,即 \(a_i=a_j,f[i][j]\leftarrow f[i+1][j-1]\),还有一种情况类似于上面的直接劈开。

2

比较麻烦,类似于母题,但是需要加一些特殊处理,而且边界。

3

转移有很多。

首先如果 \(s[i]==s[j]\),你可以考虑 \(f[i][j]\leftarrow f[i+1][j],f[i][j-1],f[i+1][j-1]+1\)(前两个必选一个,最后一个可选可无)。

其次就是类似于母题的转移。

对于上面那个,可以理解为覆盖的顺序是可以灵活调动的,而第三个并不符合这一点。

https://www.acwing.com/activity/content/code/content/7005909/

我们需要存储几种类型的字符串,然后才能转移。

总结

区间 DP,状态必须有区间,基本的题都有边界的处理(如1,3中相等的情况,2中一匹、两匹,以及1,2中合并的处理),当然必不可少的是区间的合并。

特征

发现小区间的答案可以转移到大区间。

posted @ 2023-08-31 09:08  wscqwq  阅读(1)  评论(0编辑  收藏  举报