讨论 / 金明的预算 题解
qq543099676 2012-07-21 06:17:00
点我顶贴 收藏 删除
分4种情况,只选主件,选主件和附件1,选主件和附件2,主件和附件12一起

program ex;

var i,j,k,n,m,num,vi,pi,qi:longint;

v,w,v1,w1,v2,w2,p:array[0..100]of longint;

f:array[0..4200]of longint;

begin

fillchar(w1,sizeof(w1),0);

fillchar(v1,sizeof(v1),0);

fillchar(w2,sizeof(w2),0);

fillchar(v2,sizeof(v2),0);

{//num:=0;

readln(m,n);m:=m div 10;

for i:=1 to n do

begin

readln(vi,pi,qi);

if qi=0 then

begin

inc(num);p[i]:=num;

w[num]:=vi div 10;v[num]:=w[num]*pi;

end else

begin

if w1[p[qi]]=0 then

begin

w1[p[qi]]:=vi div 10;v1[p[qi]]:=w1[p[qi]]*pi;

end else

begin

w2[p[qi]]:=vi div 10;v2[p[qi]]:=w2[p[qi]]*pi;

end;

end;

end;//}对主件、附件进行读入和处理

{//for i:=1 to num do

begin

for j:=m downto w[i] do

begin

if f[j-w[i]]+v[i]>f[j] then f[j]:=f[j-w[i]]+v[i];

if (f[j-w[i]-w1[i]]+v[i]+v1[i]>f[j])and(j-w[i]-w1[i]>=0) then f[j]:=f[j-w[i]-w1[i]]+v[i]+v1[i];

if (f[j-w[i]-w2[i]]+v[i]+v2[i]>f[j])and(j-w[i]-w2[i]>=0) then f[j]:=f[j-w[i]-w2[i]]+v[i]+v2[i];

if (f[j-w[i]-w1[i]-w2[i]]+v[i]+v1[i]+v2[i]>f[j])and(j-w[i]-w1[i]-w2[i]>=0) then f[j]:=f[j-w[i]-w1[i]-w2[i]]+v[i]+v1[i]+v2[i];

end;

end;//}动规

write(f[m]*10);

end.

状态: Accepted

测评机: Xeost[5]

得分: 100分 [我要评价一下题目~]

提交日期: 2012-7-21 21:12:00

有效耗时: 1719毫秒

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

测试结果2: 通过本测试点|有效耗时157ms

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

测试结果4: 通过本测试点|有效耗时156ms

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

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

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

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

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

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

查看更多回复
提交回复