讨论 / 牛人们看看哪儿错了?只有80分
liye14 2010-04-04 05:45:00
点我顶贴 收藏 删除
var

m,s,t,i,j,max,max1:longint;

f:array[0..1,-10..10000] of record b:boolean;l:longint;end;

begin

readln(m,s,t);

max:=m;f[0,m].b:=true;

for i:=1 to t do

begin

for j:=0 to max do

if f[0,j].b then

begin

f[1,j+4].b:=true;f[1,j].b:=true;

if j>=10 then f[1,j-10].b:=true;

if f[0,j].l+17>f[1,j].l then f[1,j].l:=f[0,j].l+17;

if f[0,j].l>f[1,j+4].l then f[1,j+4].l:=f[0,j].l;

if (f[0,j].l+60>f[1,j-10].l)and(j>=10) then f[1,j-10].l:=f[0,j].l+60;

if f[1,j].l>max1 then max1:=f[1,j].l;

if (f[1,j-10].l>max1)and(j>=10) then max1:=f[1,j-10].l;

if max1>s then begin writeln('Yes');writeln(i);exit;end;

end;

f[0]:=f[1];max:=max+4;

for j:=0 to max do

begin

f[1,j].b:=false;f[1,j].l:=0;

end;

end;

writeln('No');writeln(max1);

end.

查看更多回复
提交回复