水|POJ动态规划20题,一句话题解~

蒟蒻不会DP,找了20道入门题来刷,分享下转移过程,发现做dp最笨的方式就是画状态矩阵找转移方程,然后一些基本的经典DP要记住,剩下就是他们的变形了,背包又忘得差不多了,感觉下次得找个时间补一下。。。POJ1050非常经典,用捆绑法将二维问题转化到一维的状态来求解。
【水|POJ动态规划20题,一句话题解~】poj 1050 √最大子矩阵和:捆绑子矩阵转化为最大连续子段和问题
poj 1088 √四方向记忆化搜索dp[i][j]=max(dp[i-1][j]...)+1遍历所

有点,注意处理边界
poj 1163 √数塔dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j]
poj 1159 √dp[s][e]=min(dp[s+1][e],dp[s][e-1])+1 字符不同
poj 3280 √dp[i][j]=min(dp[i+1][j]+cost[s[i]-'a'],
dp[i][j-1]+cost[s[j]-'a'])
poj 3616 √dp[i]=max(dp[i],dp[j]+a[i].w) a[i].s>=a[j].e+r
poj 1458 √lcs dp[i][j]=max(dp[i-1][j],dp[i][j-1])||dp[i-1]

[j-1]+1
poj 1579 √记忆化搜索
poj 2081 √(dp[i-1]-i>=0)? dp[i]=dp[i-1]-i :dp[i]=dp[i-1]+i
poj 1953 √FIB
poj 2250 √LCS用string处理
poj 1887 √LDS
poj 2533 √LIS
poj 1631 √LIS nlogn
poj 1080 √LCS变形 预处理边界和加'-'后的配对情况
poj 2192 √c[i+j]==b[j]&&dp[i][j-1]==1||c[i+j]==a[i]&&dp[i-1][j]==1dp[i][j]=1画转移矩阵
poj 3356 √LCS变形 dp[i][j]=min(a[i-1]==b[j-1]?dp[i-1][j-1],dp[i-1][j-1]+1,dp[i-1][j]+1,dp[i][j-1]+1)
poj 1157 √dp[i][j]=max(dp[i-1][j-1]+a[i][j],dp[i][j-1])
poj 1014 √多重背包化01背包
poj 1125 √多源最短路中最大值的最小者FLOYD暴过

    推荐阅读