最近做的一些动态规划题总结(PKU ACM)

1014 Dividing 状态:对于前i个数,所能得到的所有可能值,需要知道前i-1个数所能得到的所有可能值,把这些值加上i之后得到的新值再添加到之前的这些值中去,就可以得到前i个数所能构成的所有值。 递推式:array[i][1~n] = array[i - 1][1~n] add (array[i - 1][1~n] + num[i]) others:数论的知识进行优化

1015 Jury Compromise 状态:背包的思想,还有i个人需要选择,从第j个人开始(选或不选) array[i][j][1~n] = array[i][j - 1][1~n] add ( array[i - 1][j - 1][1~n] + num[j] )

1050 To the Max 最大字段和问题的二维拓展

1159 Palindrome 回文,状态: d[i][j] = d[i + 1][j - 1] "s[i]=[j]" else d[i][j] = min{ d[i][j - 1], d[i + 1][j] } 

j - i 区间递增的顺序进行dp

1088 滑雪 经典备忘录算法题

3061 Subsequence 状态: d[i] 表示截至到i,>S 的最短序列长度 d[i] = d'[i - 1] + num[i] ;其中d'[i - 1]表示截至到i-1,和小于S的最长序列长度

你可能感兴趣的:(优化,算法)