讨论 / 实在不知道错在哪
Fish、のTorres 2013-03-26 04:11:00
点我顶贴 收藏 删除
var a,w:array[0..11,0..11]of longint;

l:array[0..11]of longint;

f:array[0..11,0..10001]of longint;

x,b,c,d,n,m,i,j,k,t:longint;

function max(a,b:longint):longint;

begin

if a>b then exit(a) else exit(b);

end;

begin

readln(n,m,t);

for i:=1 to n do begin

readln(b,c,d);

inc(l[b]);

a[b,l[b]]:=c;

w[b,l[b]]:=d;

end;

for i:=0 to t do

for j:=0 to m do f[i,j]:=-99999999;

f[0,0]:=0;

for i:=1 to t do

for j:=1 to l[i] do

for k:=m downto a[i,j] do

f[i,k]:=max(max(f[i,k],f[i-1,k-a[i,j]]+w[i,j]),f[i,k-a[i,j]]+w[i,j]);

for i:=1 to m do x:=max(x,f[t,i]);

if x=0 then writeln('Impossible') else writeln(x);

end.

#1 liyankui248289@2013-03-07 00:19:00
回复 删除
多谢LZ代码,只要数组上限改一下就好了

var a,w:array[0..11,0..100]of longint; //就是着

l:array[0..11]of longint;

f:array[0..11,0..10001]of longint;

x,b,c,d,n,m,i,j,k,t:longint;

function max(a,b:longint):longint;

begin

if a>b then exit(a) else exit(b);

end;

begin

readln(n,m,t);

for i:=1 to n do begin

readln(b,c,d);

inc(l[b]);

a[b,l[b]]:=c;

w[b,l[b]]:=d;

end;

for i:=0 to t do

for j:=0 to m do f[i,j]:=-99999999;

f[0,0]:=0;

for i:=1 to t do

for j:=1 to l[i] do

for k:=m downto a[i,j] do

f[i,k]:=max(max(f[i,k],f[i-1,k-a[i,j]]+w[i,j]),f[i,k-a[i,j]]+w[i,j]);

for i:=1 to m do x:=max(x,f[t,i]);

if x=0 then writeln('Impossible') else writeln(x);

end.

#2 大炮@2013-03-26 04:11:00
回复 删除
shide
#3 落鸡汤@2014-07-09 22:32:01
回复 删除
......
查看更多回复
提交回复