随笔分类 -  6.03.0 区间DP

摘要:区间DP 手动模拟一下,我们发现本题就是一个左右加数的区间DP cpp include include include include include include using namespace std; const int MAXN = 1005, MOD = 19650827; int nu 阅读全文
posted @ 2018-03-19 15:07 Mr_Wolfram 阅读(158) 评论(0) 推荐(0)
摘要:区间DP 拆链成环,然后区间DP即可,注意初始化,以及每个地方都要遍历到 cpp include include include include include define inf 0x3f3f using namespace std; int num[205], dp[205][205][2], 阅读全文
posted @ 2018-03-19 11:06 Mr_Wolfram 阅读(180) 评论(0) 推荐(0)
摘要:博弈论+dp 依旧是博弈论的壳子,但问的是最大值,所以要dp 设 dp[i][j] 表示该取 i 号硬币,上一次取了 j 个的先手能取的最大值, 因为每次从小到大枚举复杂度太高,所以我们要从 dp[i][i 1] 转移,每次新加两个状态即可 cpp include include include i 阅读全文
posted @ 2018-02-28 21:38 Mr_Wolfram 阅读(251) 评论(0) 推荐(0)
摘要:博弈论+区间dp 有博弈论吗?大约只有一个博弈论的壳子 设 dp[i][j] 表示区间 i ~ j 先手最多能取多少, 它可以由 i ~ j 1 与 i + 1 ~ j 来转移, 等于上述两个区间中后手的最大值 + 选的数 cpp include include include include us 阅读全文
posted @ 2018-02-28 19:52 Mr_Wolfram 阅读(189) 评论(0) 推荐(0)
摘要:本题虽然是在树上的问题,但仍是区间DP的基本思路,因为给定区间是树的中序遍历,所以我们枚举左右端点,dp[i][j]表示从i到j号区间所表示的子树的最大分数,在转移的时候枚举根节点k, 有转移方程 题目还要求输出先序遍历,只需在转移的时候更新root数组,rt[i][j]表示从i到j的区间所表示的子 阅读全文
posted @ 2017-11-27 21:30 Mr_Wolfram 阅读(197) 评论(0) 推荐(0)
摘要:本题是一道区间DP,很容易设计出状态, dp[i][j]代表关掉i到j的路灯所耗的电量,但是对于新到一个路灯来说,可以是原来直接来的,也可以是掉头来的,于是还需要添加一维 0代表在区间的左端,1代表在区间的右端。从最开始所在的地方扩展。 因为涉及连续区间,可以采用前缀和优化。 有如下转移方程: dp 阅读全文
posted @ 2017-11-27 20:17 Mr_Wolfram 阅读(219) 评论(0) 推荐(0)