In ActionTime Limit: 2000/1000 MS
(Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s):
3869Accepted Submission(s): 1237Problem D...
分类:
其他好文 时间:
2014-05-26 22:08:36
阅读次数:
257
01背包,需要先对数据升序排序。这样保证优先购买最贵的东西,才满足背包条件。 1 #include 2
#include 3 #include 4 5 #define MAXNUM 1005 6 7 int prices[MAXNUM]; 8 int
dp[MAXNUM]; 9 10 in...
分类:
其他好文 时间:
2014-05-26 04:41:18
阅读次数:
164
Watch The Movie
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 5106 Accepted Submission(s): 1614
Problem Description
New semester i...
分类:
其他好文 时间:
2014-05-26 04:30:16
阅读次数:
223
Pick applesTime Limit: 1000MS Memory limit:
165536K题目描写叙述Once ago, there is a mystery yard which only produces three kinds
of apples. The number of ea...
分类:
移动开发 时间:
2014-05-26 00:24:52
阅读次数:
443
大概意思是给你2个数分别代表物品个数和你带的钱数,每个物品有3个值,p,q,v,分别表示买该物品所花的钱,买该物品最低所带的钱,物品的价值。得出最大的价值。很明显是01背包。则状态转移方程为:for(i=0;i=a[i].q;j--)dp[j]=max(dp[j],dp[j-a[i].p]+a[i....
分类:
其他好文 时间:
2014-05-26 00:09:43
阅读次数:
248
接上一篇,同样的01背包问题,上一篇采用动态规划的方法,现在用回溯法解决。回溯法采用深度优先策略搜索问题的解,不多说,代码如下:
bestV=0
curW=0
curV=0
bestx=None
def backtrack(i):
global bestV,curW,curV,x,bestx
if i>=n:
if bestV<curV:
bestV=curV
bestx=...
分类:
编程语言 时间:
2014-05-24 22:08:01
阅读次数:
544
问题:
有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。
算法:
这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权...
分类:
其他好文 时间:
2014-05-24 20:39:29
阅读次数:
190
在01背包问题中,在选择是否要把一个物品加到背包中,必须把该物品加进去的子问题的解与不取该物品的子问题的解进行比较,这种方式形成的问题导致了许多重叠子问题,使用动态规划来解决。n=5是物品的数量,c=10是书包能承受的重量,w=[2,2,6,5,4]是每个物品的重量,v=[6,3,5,4,6]是每个物品的价值,先把递归的定义写出来:
然后自底向上实现,代码如下:
def...
分类:
编程语言 时间:
2014-05-23 01:49:06
阅读次数:
461
问题:
二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两种代价可付出的最大值(两种背包容量)分别为V和U。物品的价值为w[i]。...
分类:
其他好文 时间:
2014-05-22 23:36:21
阅读次数:
388
题目:
链接:点击打开链接
题意:
想看n个电影,只能从中选m个,用l时间来看,这n个电影都要花费时间a[i]去看,也有一定的价值b[i],选取最大的价值。
思路:
这是二维费用背包,总时间l是背包容量,选m个是隐藏的花费,每个电影需要的时间a[i]也是花费。这样,状态转移方程就有了:dp[i][j] = max( dp[i][j] , dp[i-1][j-a[i...
分类:
其他好文 时间:
2014-05-22 23:25:03
阅读次数:
335