![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Jason_crawford
这个作者很懒,什么都没留下…
展开
-
整数划分 --- 一个老生长谈的问题 动态规划
原文链接:http://www.cnblogs.com/xiaoxian1369/archive/2011/09/12/2174212.html1) 练练组合数学能力. 2) 练练递归思想 3) 练练DP 总之是一道经典的不能再经典的题目: 这道好题求: 1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。 3.转载 2016-07-25 15:50:03 · 540 阅读 · 0 评论 -
ZSTUOJ3698——单调序列2
题目链接 这题和POJ3666是一样的题目,只是数据范围扩大了,从2000扩大到了5000,做法和POJ3666是一样的,只需扩展数组大小即可,所以就不赘述了,全当我极不负责的水了一篇博客好了。。。,POJ3666的解释可以看这里。#include#include#include#include#includeusing namespace s原创 2017-01-17 15:47:51 · 385 阅读 · 0 评论 -
POJ3666——Making the Grade(动态规划)
题目链接 这题反正我是觉得用DP做有点恶心,看别人的题解做的,转移方程是:dp[i][j]表示前i个元素的最后一个元素为全部元素第j小时的最小代价,则dp[i][j]=min(dp[i-1][k])+abs(s[i]-cop[j]), ( 0≤i<n ,0≤j , 0≤k )从这个式子来看应该是有三重循环的,但有为大牛很巧妙的省掉了k的循环,从而降低了时间复杂度,然原创 2017-01-17 15:40:00 · 965 阅读 · 1 评论 -
HDU1069——Monkey and Banana(动态规划)
题目链接 题目要求找最高能叠的箱子的高度,其实就是按照求LIS的方式来求即可,只是此处的最长按照箱子的高度做参数,然后一个箱子能叠在另一个箱子上的前提是处在下面的箱子长和宽都比上面的箱子要大,不能相等,输入时分类一下再处理输入数组,然后按照长或者宽的顺序sort一下,再对另一个参数进行dp即可。#include#include#include#in原创 2017-01-16 15:40:03 · 398 阅读 · 0 评论 -
POJ1631——Bridging signals(动态规划)
题目链接 真的很想说这道题读懂题意比解决题目本身要难。。。然而题目本身的意思又很简单就是求最长递增子序列。但这道题有点特殊的地方就是要优化,常规的两个for的方法会超时,然后在《挑战程序设计竞赛》这本书上给了另一个nlogn的方法——就是定义dp[i]:=长度为i+1的上升子序列中末尾元素的最小值(不存在的话就是INF),初始化对dp[]数组全部赋值成INF,也就是+∞,然后对原创 2017-01-15 19:38:58 · 701 阅读 · 0 评论 -
POJ3280——Cheapest Palindrome(动态规划)
题目链接 题目意思挺好懂的,就是说给你一个字符串,要求添加或删除若干的字符使得其成为回文串。给出每个字符添加和删除的代价,求出代价最小值。简单的DP,方程为:dp[i][j]=min(dp[i][j-1]+Map[s[j]-'a'],dp[i+1][j]+Map[s[i]-'a']);dp[i][j]表示第i个字符到第j个字符的最小代价,Map[s[i]-'a']表示删除或添加原创 2017-01-09 10:55:08 · 357 阅读 · 0 评论 -
POJ3616——Milking Time(动态规划)
题目链接 这道题感觉有点像任务调度,(由于智商感人)还是看别人的题解做的。题目要求获得更多的牛奶,但区间又不能重叠,所以状态转移函数dp[i]=max(dp[i],dp[j]+s[i].product),(j表示在i之前的且与第i个区间不重合的区间),dp[i]表示第i个区间能获得的最大产量。其中第i个并不是题目给出的第i个区间,而是按照结束时间排好序的第i个区间。看一下代码还原创 2017-01-07 17:09:17 · 472 阅读 · 0 评论 -
POJ2385——Apple Catching(动态规划)
题目链接 这道题听说是很水的DP入门题。然而,我连入门题都不会。看别人的题解弄的,关键点就是要抽象出问题的状态转移,其状态转移方程为 dp[i][j] = max(dp[i-1][j] , dp[i-1][j-1])。其中dp[i][j] 表示的是 第i秒 第j跳 最多能吃多少苹果,这个看似很简单的方程我都理解了很久,其实主要的是没把别人的代码看完,这个方程是不完整的,还差原创 2017-01-06 20:28:46 · 632 阅读 · 1 评论 -
HDU1114——Piggy-Bank(装满的完全背包)
题目链接 这道题是一道完全背包练手很好的题,比较容易,但是与纯的完全背包相比却做了部分很巧的改动。其一,这是一个要求装满的完全背包。其二,这个背包求得并不是最大值,而是最小值。那么如何解决这些变动呢?首先是看求最小值,这个好处理,那就是把max( )改成min( )就好了,但求最小值影响的却不只是函数的变化,还影响了对装满背包的处理。 我们知道,无论是01背包还原创 2017-01-05 10:15:52 · 529 阅读 · 0 评论 -
POJ3176——Cow Bowling(水DP)
题目链接 开始做DP的我表示要尊重每道水题(其实是只会水题。。。)这道题就是要找一条能从三角形定点到最底边的一条路径,方法是从底边开始往上找,一直取当前节点可达的最大值,最后找到定点即可,方法上模拟了背包问题的数组一维化处理,但是空间消耗还是大大滴(1700K)。。而且时间也跑了76ms。很想知道那些0ms跑出来的大神是如何做到的。#include#inc原创 2017-01-04 14:25:40 · 345 阅读 · 0 评论 -
POJ2392——Space Elevator(DP)
题目链接 这道题的意思是给定每一块建材的高度和数目,以及其能堆叠的高度上限,求最高能叠多高,这道题和poj上的一道名字是coins的题目比较相似,我用了同样的DP策略,也就是dp[i][j]表示第i种建材块在构成高度为j时能最少能剩下多少块。那么: ①当dp[i-1][j]>=0,也就是当前高度之前的木块就能达到,第种就能全留不用原创 2017-02-09 17:28:41 · 485 阅读 · 0 评论