![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 68
_Deadpool
这个作者很懒,什么都没留下…
展开
-
Vijos P1098 合唱队形 (双重LIS)
题目:Vijos P1098 合唱队形题意: 实现中间高,两边低的队形,剔除的最少人数分析: 剔除最少人,即是队伍最长达到最大长度,分别实现升序、降序,相加最大为目标队形 状态:dp1[i]表示i为终点的最大升序,dp2[i]表示i为起点的最大降序 状态转移: dp1[i] = max(dp1[j] | i>j, a[i] > a[j]) + 1;原创 2014-07-17 15:12:55 · 272 阅读 · 0 评论 -
Codeforces Round #FF(255) C. DZY Loves Sequences (LIS升级)
题目:C. DZY Loves Sequences (LIS升级)题意: 在n个数中,最多改变一个数字,并求能够达到的最长严格上升子序列(连续)长度分析: 考虑第i个数,能否改变后拼接前后两个字串,并维护当前最大值 状态: left[i]: 表示以i为终点的最长严格上升子序列长度 right[i]: 表示以i为起点的最长严格上升子序列长度原创 2014-07-17 15:12:47 · 253 阅读 · 0 评论 -
HDU - 1159 Common Subsequence (简单LCS)
HDU - 1159 Common Subsequence题意: 在两个字符串x,y中,求它们最长的公共子串长度分析: 存在x[i] == y[j]时,则公共子串长度+1,否则,维护当前最大值 状态:dp[i][j]:表示以x[i], y[j]结尾时,最大公共子串的长度 转移方程: if(x[i] == y[j])原创 2014-07-17 15:12:40 · 262 阅读 · 0 评论 -
HDU - 1176 免费馅饼 (简单DP)
HDU - 1176 免费馅饼题意: 有n块饼,第t秒会落在x上,起点位于x = 5,每次只能移动±1步,求最多能得到饼的数目分析: 第t秒时,任意位置x最终的最大饼数,只与下一秒时,三个可达点x-1,x,x+1的最大饼数相关 状态:dp[t][x] 表示在x位置时,从t秒到max_time秒的时候,最大收获的饼数 转移方程: dp[t][x] = max(d原创 2014-07-17 15:12:38 · 323 阅读 · 0 评论 -
HDU - 1087 Super Jumping! Jumping! Jumping! (简单LIS)
HDU - 1087 Super Jumping! Jumping! Jumping! 题意: n个数中,选出升序的序列,使得和最大分析: 第i个数为结尾的时候,前面比他小的数都能加上,选择和最大的,最优化原理 状态dp[i]:表示以i结尾时的最大和 转移方程: dp[i] = max(dp[i], dp[j]+1);核心:for(i = 1; i<=原创 2014-07-17 15:12:36 · 235 阅读 · 0 评论 -
HDU - 1003 Max Sum (最大连续和)
题目:HDU - 1003 Max Sum题意: n个数里面,找一段连续的数相加,输出其中的最大的和,并输出起点、终点分析: 相加后大于该点的值,则加入当前连续段,更新该点为终点 相加后小于该店的值,则结束当前连续段,更新该点为起点、终点核心: dp[i] = max(a[i], dp[i-1]+a[i]);代码:#include #include #inclu原创 2014-07-17 15:12:45 · 309 阅读 · 0 评论 -
vijos P1836HYS与七夕节大作战 (01背包之2--转换dp对象)
题目:vijos P1836HYS与七夕节大作战题意: n个对象,每价值为vi,比重pi,总容量100分析: 类似背包重量的比重pi为实数,不能作为下标,所以改变dp对象 将求容量100内的最大价值 → 求相应价值的最小容量, 则容量第一个≤100的价值,为符合条件的价值最大的值 状态:dp[v]:价值为v的最小容积 转移方程: dp[V] = m原创 2014-07-17 15:12:49 · 255 阅读 · 0 评论 -
HDU - 1421 搬寝室 (DP)
题目链接:HDU - 1421 搬寝室题意: n件物体里面,取2*k件(每次2件),每次疲劳度为两件物体质量差的平方,求结束后的最小疲劳度 因为相邻的质量差最小,所以可以先排序,每次只用考虑从相邻的地方取 对于每一个物体,分为取、不取两种可能(类似01背包) 状态:dp[i][j]:表示从j个里面选2*i个时,最小的疲劳度 转移方程: dp[i][j]原创 2014-07-17 15:12:42 · 410 阅读 · 0 评论 -
HDU -- 2084 数塔(简单DP)
HDU -- 2084 数塔题意: 自上而下,选择一条累计和最大的路径分析: 顶点只与左右两个子节点相关,且子节点路径的选择与顶点无关(无后效性) 状态dp[i][j]:表示(i,j)点向下得到的最大累计和 转移方程: dp[i][j] = max(dp[i+1][j], dp[i+1][j+1]) + v[i][j];核心: for(i =原创 2014-07-17 15:12:34 · 304 阅读 · 0 评论