AcWing动态规划——线性DP、区间DP、计数类DP
线性DP:是指递推方程有明显的线性关系的,可能是一维线性也可能是二维的。
题目:数字三角形:
![](https://i-blog.csdnimg.cn/blog_migrate/1130eb0f40e454499d95967a0fa5b7dd.png)
动态规划时间复杂度:状态数量 * 转移计算量
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/5e9ef6902dbf1fb43b2d7af74fbc2eec.png)
最长上升子序列:
![](https://i-blog.csdnimg.cn/blog_migrate/1c6b2e964f3dff8233f6e43b2b215549.png)
![](https://i-blog.csdnimg.cn/blog_migrate/aa7cea0e23710705f195cf1638a68369.png)
怎么把最大序列保存下来?
![](https://i-blog.csdnimg.cn/blog_migrate/cc1dd27a2e9cabea237920d42860bbae.png)
最长上升子序列||:
![](https://i-blog.csdnimg.cn/blog_migrate/d9ad0595ab86e696f25d81acf1e15a5b.png)
最长公共子序列:
状态计算的划分依据:以字符串a[i]和b[j]是否包含在子序列当中作为划分依据。
![](https://i-blog.csdnimg.cn/blog_migrate/b7ae63e0450ecb67668a77d5f1d9c544.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1fd0b0bd2dbc93558406792b0c775226.png)
最短编辑距离:
![](https://i-blog.csdnimg.cn/blog_migrate/061d9fb5faea2b4edc74e235c0245b36.png)
编辑距离:
![](https://i-blog.csdnimg.cn/blog_migrate/79c7aefa60b7991a5ae1a85137b6d129.png)
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/7a2deedcbcf4ba6f6bb68a52112190c5.png)
区间DP:状态表示的时候一般表示的是某一个区间。
石子合并:
![](https://i-blog.csdnimg.cn/blog_migrate/e480f92759a327edfc4d62a5e46bf35e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/63028fab0cbe065f593d5f0c0089101c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2613482cb4af655fa4438466cea4c2a9.png)
计数类DP:
(1)抽象成背包问题:
![](https://i-blog.csdnimg.cn/blog_migrate/a8ae7717d5aba1a2ff998651634d9a62.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b1318b1dce502aa5cbc38776dcc18396.png)
(2)另外一种解法:
![](https://i-blog.csdnimg.cn/blog_migrate/5d528f46029ddc0407b11a4233249b4f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c912960467f24fb41c4ef744939802d4.png)