动态规划专题(持续更新中)

HDU 1159  Common Subsequence

传送门: 点击打开链接

最长公共子序列,模板题。dp[i][j]表示第一个串中前i个字符跟第二个串中前j个字符的相等数目。
状态转移方程:如果两者相等  dp[i][j]=dp[i-1][j-1]+1;否则  dp[i][j]=max(dp[i-1][j],dp[i][j-1])

题解: 点击打开链接


HDU 1087  Super Jumping! Jumping! Jumping!

传送门: 点击打开链接

最长递增子序列和,模板题。dp[i]表示从开始到i的数中最长序列的值。
状态转移方程:如果a[j]小于a[i]记录最大a[j]的值, dp[i]=maxx+a[i]

题解: 点击打开链接


HDU 5543  Pick The Sticks

传送门:点击打开链接

二维DP,0-1背包问题,一维表示背包存放的值,一维枚举两端木板的状态。
状态转移方程: dp[j][k]=max(dp[j][k],dp[j-w[i]][k]+val[i])跟dp[j][k]=max(dp[j][k],dp[j-w[i]/2][k-1]+val[i])

题解: 点击打开链接


HDU 1029 Ignatius and the Princess IV

传送门: 点击打开链接

水题不解释,模拟即可。


HDU 1257  最少拦截系统

传送门: 点击打开链接

分类确实是DP,但模拟可以过。水题不解释。

HDU 1160  FatMouse's Speed

可以按照体重递增排序,用dp[i]数组表示前i个老鼠中,有多少个是符合题目要求的,用path数组记录当前数组的前一个的值,使用结构体记录老鼠的初始位置。path数组初始化为每一个老鼠都只能到达本身,最后倒序输出。典型的dp模板题,就是多了路径记录。

题解: 点击打开链接

HDU 1069  Monkey and Banana

传送门: 点击打开链接

不确定哪是矩形的长宽高,就将每次的三个数都设为长宽高,这样每输入一次得到6个矩形,按矩形的长和宽排序,在满足情况的条件下进行累加,得到高,

状态转移方程: dp[i]=dp[j]+p[i].z

题解:待更新

HDU  1114  Piggy-Bank

传送门: 点击打开链接

完全背包问题,只不过是求最小的钱数,初始化稍作变动即可,即都初始为最大值。

状态转移方程: dp[j]=min(dp[j],dp[j-w[i]]+v[i])

题解:待更新

POJ 2533  Longest Ordered Subsequence

传送门:点击打开链接

最长递增子序列。区别于最长连续递增子序列。做法类似于最长连续递增子序列,dp[i]代表前i项最长递增数的数量。

状态转移方程:如果a[j]小于a[i]记录最大a[j]的值, dp[i]=maxx++

题解:类似于HDU1087

POJ  3616  Milking Time

传送门:点击打开链接

奶牛挤奶的时间固定,有其价值,挤完一个需要休息r分钟,问最多能挤多少奶。

结构体将时间从小到大排序,枚举每一个奶牛,用时间做数组下标,时间允许的情况下状态转移: dp[i]=max(dp[j]+p[i].v,dp[i])

题解:待更新


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值