Skip to content

Commit

Permalink
Update dp优化.md
Browse files Browse the repository at this point in the history
新增常见DP优化
  • Loading branch information
CurryWOE authored Oct 30, 2023
1 parent 2bdb9a2 commit 6c0b542
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions docs/Dp/dp优化.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ for(int len=2;len<=n;++len)
---
DP优化:

记忆化搜索

合并同类项

如果转移式子只和上一层有关,滚动数组
Expand All @@ -36,10 +38,12 @@ DP优化:

整除只在余数为0时变换,可以用同余聚类

增量式DP:以XX为结尾的串/序列,后面加一个XX

遍历一棵树,设当前遍历到 $u$ 节点,有子节点 $v_1,v_2,...$,每次遍历一颗子树就把信息和前几颗子树的信息合并,放到 $u$ 上,最终总的复杂度是 $O(n^2)$。因为每对不同点对 $(x,y)$ 不会重复合并,最多 $O(n^2)$ 个不同点对

一颗树的高度小于等于树大小,所以合并复杂度如果和高度相关,不会超过 $O(n^2)$

如果DP取值是1或0,不妨把一维作为信息去处理,而不是条件

对于dp[i][j]从max(dp[i-1][j-1],dp[i-2][j-2],dp[i-3][j-3]...)转移过来的,这样对角线上的DP,每条对角线用i-j作为标识符,求DP时同时处理每条对角线前缀最大值

连续m个元素至少选2个,考虑最后两个元素选择在什么位置,可以把倒数第二个元素绝对位置,空间复杂度O(n),优化成倒数第二个元素和倒数第一个元素的相对位置,空间复杂度O(m)。同时倒数第一个元素的位置考虑对m取模,这样第一维也优化成O(m)

0 comments on commit 6c0b542

Please sign in to comment.