讨论 / 这题做对的时间居然可以比骗分的短……
闪翼魔术师 2014-02-13 17:34:30
点我顶贴 收藏 删除
测试点1 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出600092

选手输出yesyes

测试点2 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出700453

选手输出yesyes

测试点3 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出1779904

选手输出yesyes

测试点4 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出1522381

选手输出yesyes

测试点5 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出342149

选手输出yesyes

测试点6 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出819638

选手输出yesyes

测试点7 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出1986926

选手输出yesyes

测试点8 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出3413994

选手输出yesyes

测试点9 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出2312607

选手输出yesyes

测试点10 Unaccepted / 在1行选手输出与标准输出存在差异

标准输出765430

选手输出yesyes

type

node=record

w1,w2,t1,t2:longint;

end;

var a:array[1..40]of node;

n,t,i,j:longint;

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

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

begin

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

end;

begin

readln(n,t);

for i:=1 to n do

begin

readln(a[i].w1,a[i].t1,a[i].w2,a[i].t2);

if(a[i].w1<a[i].w2)or(a[i].w1<a[i].w2)then

begin

writeln('yesyes');

exit;

end;

end;

fillchar(f,sizeof(f),0);

for i:=1 to n do

for j:=t downto 1 do

begin

if j>=a[i].t1 then

f[j]:=max(f[j],f[j-a[i].t1]+a[i].w1);

if j>=a[i].t2 then

f[j]:=max(f[j],f[j-a[i].t2]+a[i].w2);

end;

writeln(f[t]);

readln;

readln;

end.

#1 闪翼魔术师@2014-02-13 17:37:11
回复 删除
因此for i:=1 to n do

for j:=t downto a[i].t2 do

begin

if j>=a[i].t1 then

begin

f[j]:=max(f[j],f[j-a[i].t1]+a[i].w1);

end;

f[j]:=max(f[j],f[j-a[i].t2]+a[i].w2);

end;

begin

if j>=a[i].t1 then

f[j]:=max(f[j],f[j-a[i].t1]+a[i].w1);

if j>=a[i].t2 then

f[j]:=max(f[j],f[j-a[i].t2]+a[i].w2);

end;

才会不一样……

坑爹爹啊

#2 沧海一声喵@2018-03-02 21:46:42
回复 删除
一道题会做的人秒杀,不会做的人要花较长时间骗分,很符合实际啊
查看更多回复
提交回复