dp:朴素dp
文章平均质量分 90
ProLightsfxjh
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #367 (Div. 2) C. Hard problem 朴素dp、线性dp
状态定义: LL dp[maxn][2]; dp[i][0] 表示前 i 个字符串 按字典序排列, 且第 i 个字符串不翻转 的 最小花费 dp[i][1] 表示前 i 个字符串 按字典序排列, 且第 i 个字符串翻转 的 最小花费 初始化: dp[i][0] = dp[i][1] = INF 边界: i == 0, dp[i][0] = 0, dp[i][1] = c[i]; 状态转移方程: if(dp[i - 1][0] != INF) if(s[i] >= s[i - 1]) dp[i][0原创 2016-09-09 02:00:51 · 841 阅读 · 0 评论 -
Codeforces Round #363 (Div. 2) C. Vacations 贪心+dp
贪心+dp //!从前往后, 前面的决定后面的, dp的思想, 前面处理完的时候前面部分是最优的了 如果第一位是 3, 第二位任意,直到出现一个1或者2 后面的如果是0还是0,如果是3就要相应的转化成1 或者 2 if(val[0] == 0) ans++; 对于 i = 1 ~ n-1 if(val[i] == 1 && val[i-1] == 1){ ans++; val[i] = 0; } else if(val[i] == 2 && val[i-1] ==原创 2016-09-28 23:32:06 · 1019 阅读 · 0 评论 -
UVALive - 7544 Banking II 朴素dp、类似于背包的dp
题意:给出一个数字字符串,然后给出一个由小写字母构成的字符串,每个小写字母x 表示 有且必须选择一段连续的长度为 x - 'a' + 1的数字字符,然后要求这些小写字母按顺序选取数字字符串的子串,求选取的数字的和的最大值 朴素dp、类似于背包的dp 定义dpij 表示当前在考略第i个小写字母,将要选取的数字字符串子串是 [j - ( k[i] - 'a' + 1), j],时已经选中的数字的和的最大值, 每次初始为 dpij = dpi-1j,然后进行转移即可 复杂度 O(n^2)原创 2017-01-21 19:54:29 · 669 阅读 · 0 评论 -
HihoCoder - 1037 数字三角形 基础dp、朴素dp
题意:dp基础题,给出一个数字三角形,求一条从顶到底的路径,路径权值和的最大值。 基础dp、朴素dp 复习下dp基础知识, 动态规划的一个核心概念在于不去计算已经计算的东西,不去计算不需要的东西,即"取出冗余"。 且要满足,性质一:无后效性,即当前的抉择不会对后面的抉择产生影响; 性质二:重复子问题,即把当前问题分解为k个问题。 然后定义状态, 写出状态转移方程, 并从时间和空间的角度优化 状态和状态转移方程。 然后注意处理边界情况。 这题直接定义 dpij表示走到第原创 2017-04-29 00:12:19 · 785 阅读 · 0 评论 -
Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo dp+矩阵快速幂
题意:从(0,0)走到(k,0)(1 ≤ k ≤ 1018),每次可以从(x, y) 走到 (x+1, y+1) 或 (x+1, y) 或 (x+1, y-1),然后必须在很多个y == ci的线段下面走, (相邻的线段,前一个的结束x坐标bi和后一个线段的开始x坐标ai+1 相同,且y = ci可能不同) dp+矩阵快速幂 比较裸的dp+矩阵快速幂,因为这里k为1e18,所以几乎只能用矩阵快速幂来做了。 朴素的dp,dpij表示走到(i, j)时的方案数, 则 状态方程为,if(j+1 <= b[k])原创 2017-06-26 19:56:39 · 1305 阅读 · 0 评论