
动态规划
文章平均质量分 81
Willona_C
这个作者很懒,什么都没留下…
展开
-
hdu1029 Ignatius and the Princess IV(DP求数列中出现次数过半的数)
题意:给定一个奇数n以及n个数,求其中出现次数至少为(n+1)/2的数。因为要求数个数过半,所以如果存在,必只有一个。这个题还是会用到DP的思想:若a为n个数中出现次数过半的数,则去掉2k(k为整数)个数,当这2k个数不存在出现次数超过k的数时,剩余n-2k个数中出现次数过半的数仍是a。所以,定义两个变量分别为x、y,分别记录当前出现次数过半的数,当下一个数等于x时,y加一;当下一个数不等原创 2015-07-16 22:50:45 · 711 阅读 · 0 评论 -
hdu1028 Ignatius and the Princess III(DP整数划分)
题意:给定一个整数,将其写成若干个整数的和,求有多少种情况。可以直接考虑各个加数递减的情况,避免重复。依旧是DP的思想。将整数n划分成两个整数之和,n+0,(n-1)+1,(n-2)+2,……,(n-n/2)+(n/2)。再将加号前面的加数继续如此划分,注意:继续划分时,后一个加数至少为上一级的后一个加数,以确保加数列的递减性。用a[n][1]表示将n表示成(n-1)+1的情况数,则可知a原创 2015-07-16 22:53:20 · 497 阅读 · 0 评论 -
POJ2533 Longest Ordered Subsequence(最长递增子序列)
题意:长度为n的数列,求最长递增子序列的长度。法一:动态规划,时间复杂度O(N²):dp[i]表示以第i个为结尾的数列的最长子序列长度,等于该数之前的最长子序列(该数大于子序列的最大数)的长度加一。#include #include #include using namespace std;int a[1005],dp[1005];int main(){ in原创 2015-07-26 20:40:31 · 466 阅读 · 0 评论 -
CodeForces 115E Linear Kingdom Races(线段树 + DP)
题意:有n条赛道,m场比赛,比赛需要占用若干条赛道,在举行比赛之前需要修理赛道,利润 = 举办比赛获利 - 修理赛道的费用,当然可以选择不举办某几场比赛,求最大利润。先将所有比赛所要占用的赛道区间按右端从小到大排序,dp[i]表示前i场比赛可得的最大利润。若第i场比赛的赛道区间为[l, r],则影响利润的一定是l之前的赛道,所以第l - 1条及其之前的赛道都要加上第i场比赛的利润,若要修理第i原创 2015-08-05 22:53:02 · 1059 阅读 · 0 评论 -
POJ1384 Piggy-Bank(完全背包~~)
题意:给出储蓄罐状态分别为空和满时的重量,以及不同面值的硬币对应的质量。要求出储蓄罐中至少有多少钱。/*完全背包*/#include #include #include #include #define maxn 100000005using namespace std;int main(){ //freopen("in.txt","r",stdin); i原创 2015-07-14 23:43:09 · 542 阅读 · 0 评论 -
POJ3624 Charm Bracelet(01背包~~简单DP~~)
第一天开始看动态规划DP,先从背包问题开始,找了背包九讲一点一点往下看,发现以前觉得怎么都绕不过来的DP也并没有想象中那么难嘛 (*^-^*) 今天一共敲了四道简单的背包题,就因为忘了把freopen注释掉,wa了好几次。。。。。。代码习惯经常被队友吐槽,正在慢慢改╮(╯▽╰)╭POJ3624就是一个简单的01背包~~/*01背包*/#include #include #includ原创 2015-07-14 23:26:19 · 556 阅读 · 0 评论 -
POJ1276 Cash Machine(多重背包~~)
题意:可以理解为是一个容量为cash的大包,已知若干货物的个数和体积,要尽可能多地利用包内空间。问包内所有货物的体积最多是多少。/*多重背包*/#include #include #include #include using namespace std;bool f[100005];int used[100005];int cash,N,n[15],d[15];int原创 2015-07-14 23:59:34 · 503 阅读 · 0 评论 -
POJ1337 Balance(完全背包~~)
题意:有一个天平,若干砝码,要用上所有砝码,使天平处于平衡状态,问有几种不同情况。当放上去的砝码不同时,天平会有不同的平衡状态,设为j,当j0时表示右边重;当j=0时则天平处于平衡。为了使数组下标不出现负数情况,要用到状态转移(见代码),所以,当j=7500时为平衡状态。/*完全背包*/#include #include #include #include using na原创 2015-07-14 23:53:12 · 493 阅读 · 0 评论 -
UVALive 4857 Halloween Costumes(区间DP)
题意:某人一晚上要参加n个聚会,每场聚会都要穿对应的衣服,在参加下一场聚会之前,他可以选择穿上下一场聚会对应的衣服,也可以选择由外向里脱衣服,直到露出下一场聚会对应的衣服。规定脱下的衣服不能再穿,也就是说,若在脱下2号衣服之后的某一场聚会需要穿上2号衣服,不能穿之前脱下的,只能拿一件新的。求他在所有聚会开始前,至少需要准备几件衣服。分析:这种类似贪心、要求最优情况的题,习惯性想到DP。状态转移原创 2015-10-05 22:56:53 · 383 阅读 · 0 评论