讨论 / rq109 庆功会 大家看下我什么地方错了.
g(x) 2009-09-22 09:57:00
点我顶贴 收藏 删除

状态: Unaccepted

测评机: Xeost[5]

得分: 30分

提交日期: 2009-9-13 18:52:00

有效耗时: 515毫秒

测试结果1: 通过本测试点|有效耗时171ms

测试结果2: 测试结果错误.错误结果为:70644

5 18 42 45 48 60 90 92 105 109 120 133 154 171 175 191 196 199 214 218 225 227 238 241 273 293 304

正确结果应为:70701

5 18 42 45 48 60 90 92 105 109 120 133 154 171 175 191 196 214 218 225 227 238 241 259 273 293 304

测试结果3: 通过本测试点|有效耗时172ms

测试结果4: 测试结果错误.错误结果为:113169

7 10 22 28 38 41 46 51 58 63 68 71 73 83 90 97 110 114 116 119 122 130 137 145 147 148 150 165 170 172 173 176 179 181 186 188 190 198 200 208 215

正确结果应为:113354

7 22 28 38 41 46 51 58 63 68 71 73 83 90 97 110 114 116 119 122 130 137 145 147 148 150 165 167 170 172 173 176 179 181 186 188 190 194 198 200 208 215

测试结果5: 测试结果错误.错误结果为:73345

1 5 8 11 13 14 15 24 25 26 27 28 31 32 33 39 41 42 46 51 52 53 54

正确结果应为:73450

1 5 8 11 13 14 15 21 24 25 27 28 31 32 33 39 41 42 46 51 52 53 54 56

测试结果6: 测试结果错误.错误结果为:137020

13 14 15 17 24 28 34 49 52 56 59 65 77 85 88 97 98 101 102 105 110 113 121 126 130 140 141 145 150 158 162 173 174 181 182 184 187 202 204 205 208 219 221 244 245 253 256 285

正确结果应为:137034

13 14 15 17 24 28 34 49 52 56 59 65 77 85 88 97 98 101 102 110 121 126 130 140 141 145 150 158 162 173 174 181 182 184 187 202 204 205 208 219 221 226 244 245 251 253 256 285

测试结果7: 测试结果错误.错误结果为:49835

14 16 22 28 36 45 81 91 94 130 141 173 178 200 216

正确结果应为:49913

16 22 28 36 38 45 81 91 94 130 141 173 178 200 216

测试结果8: 测试结果错误.错误结果为:70853

1 2 3 4 5 6 11 13 14 15 16 17 18 20 21 23 27 29 32 34 35 36 38

正确结果应为:71182

1 2 3 4 5 6 7 11 14 15 16 17 18 20 21 23 27 29 32 34 36 38

测试结果9: 通过本测试点|有效耗时172ms

测试结果10: 测试结果错误.错误结果为:156297

4 8 11 19 23 28 29 31 41 46 48 56 61 65 69 86 87 90 100 102 104 108 112 114 117 119 123 124 128 133 134 136 138 140 146 156 157 158 187 190 191 199 202 204 212 214 219 220 234 238 239 240 243 244 245 248 249

正确结果应为:156417

4 8 11 19 23 28 29 31 41 46 48 56 61 65 69 86 87 90 100 102 104 108 112 114 117 119 123 124 128 133 134 136 138 140 143 146 156 157 187 190 191 199 202 204 212 214 219 220 234 238 239 240 243 244 245 248 249

提交代码: program RQ109;

var a,e:array[0..5050]of longint;

f:array[0..5050,0..500] of integer;

i,j,k,m,n,x,y,z,s,max:integer;

begin

read(n,s);

for i:= 1 to n do

begin

read(x,y,z);

x:=x*z;

y:=y*z;

for j:=s-x downto 0 do

if (a[j]<>0)or(j=0) then

if a[j+x]<a[j]+y then

begin

e[j+x]:=e[j]+1;

a[j+x]:=a[j]+y;

for k:= 1 to e[j] do

f[j+x,k]:=f[j,k];

f[j+x,e[j+x]]:=i;

end;

end;

for i:= 1 to s do

if max<a[i] then

begin

max:=a[i];

j:=i;

end;

writeln(a[j]);

for i:= 1 to e[j]-1 do

write(f[j,i],’ ’ );

writeln(f[j,e[j]]);

end.

#1 g(x)@2009-09-13 04:39:00
回复 删除
附上题目:

描述

八(1)班由于在期中考中获得了团体第一名,班主任吴老师决定开一场庆功会。于是购买东西的任务就交给了小李同学(钱由班会出)。由于小李同学四肢发达,头脑简单,于是这个任务便落到了你头上(当然不要你跑腿。跑腿是小李的事 ^_^)

注:可以全买,但不能不买。即至少买1种

输入格式

第一行二个数n(n<=500),m(m<=5000),其中n代表希望购买的物品的种数,m表示班会拨给小李的钱数。

接下来n行,每行3个数,v、w、s,分别表示第I种物品的价格、价值(价格 与 价值 是不同的概念)和购买的数量(只能买0件或s件),其中v<=100,w<=1000,s<=10

输出格式

共两行:

第一行:一个数,表示此次购买能获得的最大的价值(注意!不是价格)。

第二行:小李此次购买(能获得的最大价值)所选择的物品种类的序号。

#2 g(x)@2009-09-16 06:22:00
回复 删除
ding!
#3 webeskycn@2009-09-22 09:57:00
回复 删除
这题因为数组没开够我没发现导致答案错误让我郁闷了n久- -

菜啊我......

program qgh;

var

i,j,k,m,n,s:Longint;

v,p:array[1..510]of longint;

ff,gg:array[0..510,0..5100]of longint;

procedure print(xx,vv:longint);

begin

if xx=0 then exit;

if gg[xx,vv]=1 then begin print(xx-1,vv-v[xx]); write(xx,’ ’); end

else if gg[xx,vv]=0 then print(xx-1,vv);

end;

begin

readln(n,m);

fillchar(ff,sizeof(ff),0);

for i:=1 to n do

begin

readln(v[i],p[i],s);

v[i]:=v[i]*s;

p[i]:=p[i]*s;

end;

for i:=1 to n do

for j:=0 to m do

begin

if j>=v[i] then

begin

if ff[i-1,j]<ff[i-1,j-v[i]]+p[i] then

begin

ff[i,j]:=ff[i-1,j-v[i]]+p[i];

gg[i,j]:=1;

end

else

begin

ff[i,j]:=ff[i-1,j];

gg[i,j]:=0;

end;

end

else

begin

ff[i,j]:=ff[i-1,j];

gg[i,j]:=0;

end;

end;

writeln(ff[n,m]);

print(n,m); writeln;

end.

查看更多回复
提交回复