竞赛总分(动态规划)
2016-04-08 21:48
267 查看
Description学生在我们USACO的竞赛中的得分越多我们越高兴。我们试着设计我们的竞赛以便人们能尽可能的多得分。现在要进行一次竞赛,总时间T固定,有若干类型可选择的题目,每种类型题目可选入的数量不限,每种类型题目有一个si(解答此题所得的分数)和ti(解答此题所需的时间),现要选择若干题目,使解这些题的总时间在T以内的前提下,所得的总分最大。输入包括竞赛的时间,M(1 <= M <= 10000)和题目类型数目N(1 <= N <=
10000)。后面的每一行将包括两个整数来描述一种"题型":第一个整数说明解决这种题目能得的分数(1 <= points <= 10000),第二整数说明解决这种题目所需的时间(1
<= minutes <= 10000)。Input第 1 行: 两个整数:竞赛的时间M和题目类型数目N。 第
2-N+1 行: 两个整数:每种类型题目的分数和耗时。Output单独的一行,在给定固定时间里得到的最大的分数。Sample Input
F[j]表示前i种物品在容量为j的背包里的最大价值,状态转移方程为:f[i,j]=max{f[I,j-w[i]]+u[i],f[i-1,j]}(1<=i<=n,w[i]<=j<=m)max{f[1],f[2],…,f[m]}即为所求。时间复杂度:O(nm)程序:var
m,n,w,u,i,j:longint;
f:array[0..100000]of longint;
begin
readln(m,n);
for i:=1 to n do
beginreadln(w,u);
for
j:=u to m doif f[j-u]+w>f[j] then f[j]:=f[j-u]+w;
end;
for j:=1 to m do
if f[j]>f[0] then
f[0]:=f[j];
writeln(f[0]);
end.版权属于: Chris
原文地址: http://blog.sina.com.cn/s/blog_83ac6af80102vb7e.html
转载时必须以链接形式注明原始出处及本声明。
10000)。后面的每一行将包括两个整数来描述一种"题型":第一个整数说明解决这种题目能得的分数(1 <= points <= 10000),第二整数说明解决这种题目所需的时间(1
<= minutes <= 10000)。Input第 1 行: 两个整数:竞赛的时间M和题目类型数目N。 第
2-N+1 行: 两个整数:每种类型题目的分数和耗时。Output单独的一行,在给定固定时间里得到的最大的分数。Sample Input
300 4
100 60
250 120
120 100
35 20Sample Output
605
解题思路:这其实就是一个完全背包。
F[j]表示前i种物品在容量为j的背包里的最大价值,状态转移方程为:f[i,j]=max{f[I,j-w[i]]+u[i],f[i-1,j]}(1<=i<=n,w[i]<=j<=m)max{f[1],f[2],…,f[m]}即为所求。时间复杂度:O(nm)程序:var
m,n,w,u,i,j:longint;
f:array[0..100000]of longint;
begin
readln(m,n);
for i:=1 to n do
beginreadln(w,u);
for
j:=u to m doif f[j-u]+w>f[j] then f[j]:=f[j-u]+w;
end;
for j:=1 to m do
if f[j]>f[0] then
f[0]:=f[j];
writeln(f[0]);
end.版权属于: Chris
原文地址: http://blog.sina.com.cn/s/blog_83ac6af80102vb7e.html
转载时必须以链接形式注明原始出处及本声明。
相关文章推荐
- 2006年分区联赛提高组之二&nbsp;金明的…
- 2006年分区联赛提高组之二&nbsp;金明的…
- USACO&nbsp;2.3&nbsp;货币系统
- USACO&nbsp;2.3&nbsp;货币系统
- 分组背包(动态规划)
- 分组背包(动态规划)
- 潜水员(动态规划)
- 潜水员(动态规划)
- pcl里面的法线估计
- 给瘦子的汉堡包
- UIScrollView的常用属性
- KMP
- 欢迎使用CSDN-markdown编辑器
- MyBatis (5)——实现关联表查询
- 庆功会(动态规划)
- 庆功会(动态规划)
- 混合背包(动态规划)
- 混合背包(动态规划)
- 完全背包(动态规划)
- 完全背包(动态规划)