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])。
题解:待更新