首页 > 代码库 > {POJ}{动态规划}
{POJ}{动态规划}
动态规划与贪心相关:
{POJ}{2479}{Maximum Sum} (DP)
摘要: 题意:给定n个数,求两段连续子列的最大和。思路:先从左向右dp,求出一段连续子列的最大和,再从右向左dp,求出两段连续子列的最大和,方法还是挺经典的。
{POJ}{1036}{Gansters} (DP)
摘要: 题意:有个伸缩门,门的宽度0~K,每个时间可以伸长或缩短1个单位,有N个流氓,他们在T时刻到达,如果这时门的宽度正好与他们的stoutness相等时,便可获得一定的收入,问最大的收入是多少。
思路:典型的动态规划,用dp[t][k]来记录t时刻门宽度为k时的最大收入,由于这个值只与dp[t-1][]有关,所以可用滚动数组来实现,不然会超内存,另外存储流氓时还是利用struct来存放,否则内存不够
{POJ}{3230}{Travel} (DP)
摘要: 题意:有n个城市,一个人从i到j城市时,可以得到income[j]的财富,需要消耗cost[i][j]的财富,也可以选择不动,也就是呆在i城市,那么可以得到income[i]的财富,需要消耗cost[i][i]的财富,但每个城市的incom[]是随天数变化的,求出m天内这个人能获得的最大的财富值。
思路:很明显的dp,用dp[m][i]记录第m天,在第i个城市时所能获得的最大财富值
{POJ}{3132}{Sum of Different Primes} (DP)
摘要: 题意:给定n和k,要求找出k个互不相同的素数,使其和==n,求这样的组合有多少
思路:因为素数互不相同,自然想到了0-1背包,可是怎么背包却想了很久,因为多了一个限制:k,那么必须用两维数组来做,用dp[M][K]表示在组成M时,K个素数互不相同的情况,于是可以用0-1背包来对每个prime进行dp: dp[m][k] = dp[m][k] + dp[m-prime[i]][k-1];
{POJ}{2385}{Apple Catching} (DP)
摘要: 题意:牛Bessie可以在两棵苹果树之间来回走,在连续的一段时间内,每分钟都从两棵树之间掉苹果,但同一分钟只有一棵树掉,Bessie一分钟只能在一棵树下接苹果,问在规定的步数之内,Bessie最多可以吃掉多少苹果。
思路:此题用动态规划思想考虑,在第m次移动后,在t分钟所获得的苹果是根据第m-1次移动第t-1分钟 和 第m次移动第t-1分钟决定的。记f[m][t]为第m次移动t分钟时所获得的最大的数...阅读全文
{POJ}{1179}{Polygon} (DP)
摘要: 题意:给定一个多边形,顶点时数字,边是操作,问去掉一个边后,能得到最大的数字是多少,并且输出这些情况。这题是矩阵链相乘的变体,用dp做就可以了,但是要注意,两个负数相乘有可能也是最大的,所以一个状态的最大数和最小数都要记忆,最后寻找最大数就可以了。
{POJ}{1716}{Integer Intervals} 贪心
摘要: 题意:给定n个区间,求一个点集S,使每个区间最少有两个元素在s中。
思路就是贪心咯,按区间的终止点(右边的点)从小到大排列,我们每次取区间最右边的点(所取的几个点是最优的),使这个区间内至少有两个点在s中,贪心的证明很简单,在纸上画一画就出来了。
{POJ}{1065}{Wooden Sticks} 贪心
一道贪心题目,题意:有n个木棒,分别不同的长度和不同的重量,一个机器需要处理这些木棒,如果第i+1个木棒的重量和长度都>=第i个处理的木棒,那么将不会耗费时间,否则需要增加一个单位的时间,问最少需要多少时间处理完(包括机器启动的时间)
思路:我们把木棒按重量从小到大排列,而且相同的重量按长度从小到大排列,然后每次选取合适的木棒加入一个集合,这个集合木棒的顺序是按重量和长度递增的,也就是说这个集合只需要一个单位的时间就可以处理完,我们可以证明是最优的:因为我们已经对木棒进行了排序,那么我们每次选取的木棒是对以后放木棒影响最小的那一个,这样我们就会得到最优解。
{POJ}{2029}{Get Many Persimmon Trees}
摘要: 这题应该用树状数组做,可是第一眼看,想都没想就搜了...
{POJ}{1157}{LITTLE SHOP OF FLOWERS}
摘要: dp问题,不算太难写好之后一直不过,原因就是在第一列的初始化时,没有处理好。。。
{POJ}{1050}{To the Max}
摘要: 此题又是DP,我是看了结题报告才想出来的。。。。。。。。。。。。苦想了好长时间,就是一层纸捅不破,原来那就是应该加一个二维数组记录每行的前i个值得和,说白了就是记录一下状态,因为题意是一个二维矩阵和得优化,所以一维的状态时不能够满足的,看来DP还是没理解透彻
{POJ}{1018}{Communication System}
摘要: 此题是DP问题,可是我一直没有想出公式只能根据带宽来枚举,再采用贪心策略
{POJ}{3927}{Priest John‘s Busiest Day}
思路:贪心策略,按照中点排序,则可以证明应该尽量完成中点靠前的,这题小trick特别多,应该注意。