码迷,mamicode.com
首页 > 其他好文 > 详细

基础DP 19道

时间:2015-03-09 10:54:09      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

VJ链接:点击打开链接

基础DP做好了更有益~!

从中得出几个结论:

1. 背包问题所选的物品是没有相关性,是填充性质

2. LIS问题是元素之间有某种关系(多个属性则先排序某个,在依据另一个LIS)

3. TSP组合问题,一般进行状压,求元素的某种序


题目:

1. 最大M子段和

这个很像多维背包问题,有个数限制。同时我们可以发现最后这个元素只能是  i个子段中最后一个子段

dp[i][j]用来表示由前 j项得到的含i个字段的最大值,且最后一个字段以num[j]项结尾。
  dp[i][j]=max(dp[i][j-1]+num[j],dp(i-1,t)+num[j])   其中i-1<=t<=j-1.
  (因为必须是以 num[j] 结尾的,所以num[j]一定属于最后一个子段,即要么自己独立成一个子段,要么与前边以num[j-1]结尾的子段联合)
  所求的最后结果为 max( dp[m][j] ) 其中1<=j<=n.

因为dp[i-1][t] 出现在j之前,所以边循环边求进行优化

类似问题:以XX为结尾是这类问题的关键,恰好也是阶段。九度 最大加法和 ,LCS

2.水题

3.看清题意是完全小于,先排序好面积,然后LIS

4.求组合,TSP问题。注意先将字符串排序,求到的自然就是字典序最小的情况

5.LIS

6.背包问题,利用混合背包

7.数塔问题,阶段清晰。就是刚开始没有依据T直接建立好阶段,导致很麻烦

8.水题,注意没有12点,显示是00. 以i为结束的最优情况

9.两种方法,①:既然所有的炮弹都要被打下来,则将用的炮弹都存放起来每次用最低的那个打,贪心策略 更高的炮弹应付更高的敌人。

  ②:最长不降子序列,dp[i]存放到i时有多少个LIS

10.排序后LIS,先让体重有序再判断速度

11.输出路径的背包问题,关键在于每次还要回溯判断是否已经用个这个元素,编码复杂

12.LCS

13.数塔问题,可以将初始点也放入,自后向前递推即可。注意每个板子有两个点,一次下落只能到一个木板

14.LIS N^2 NlogN

15.这个刚开始没看懂题。每次只能从给出的序列两端选取,求和最大。区间dp

16.很像之前那个滑雪,转移是有条件的,于是排序再转移

17.dp[i][j] 以i,j为起点的子矩阵。从右上角往左下角递推

18.LIS变形

19.这个题难。求使得一个序列的数字变成单调的,于是与需要给某些数字加,某些减。要变成的数字必然是已有的数字(不知道为什么)

dp[i][j] 处理到i时,以j为结尾最小值。数字起先复制一份排序,这样保证了“序” dp[i][j] = min(dp[i][j],dp[i-1][mn]+abs(a[i]-b[j]);

mn是0~j-1的最小数

基础DP 19道

标签:

原文地址:http://blog.csdn.net/gg_gogoing/article/details/44152089

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!