关于NOIP2007 的第三题的解program a3_2(input,output);varm,s,t,ti:longint;ms:array[1..2,0..300000] of longint; ts:array[0..300000] of longint; beginassign(input,'escape.in');assign(output,'escape.out');reset(input);rewrite(output);readln(m,s,t)
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/28 13:06:40
关于NOIP2007 的第三题的解program a3_2(input,output);varm,s,t,ti:longint;ms:array[1..2,0..300000] of longint; ts:array[0..300000] of longint; beginassign(input,'escape.in');assign(output,'escape.out');reset(input);rewrite(output);readln(m,s,t)
关于NOIP2007 的第三题的解
program a3_2(input,output);
var
m,s,t,ti:longint;
ms:array[1..2,0..300000] of longint;
ts:array[0..300000] of longint;
begin
assign(input,'escape.in');
assign(output,'escape.out');
reset(input);
rewrite(output);
readln(m,s,t);
ms[2,0]:=m;
ts[0]:=0;
/* for ti:=1 to t do {动态规划}
begin
if ms[2,ti-1]>=10 then {如果能使用闪烁,就是用}
begin
ms[1,ti]:=ms[1,ti-1]+60;
ms[2,ti]:=ms[2,ti-1]-10;
end
else
begin
ms[1,ti]:=ms[1,ti-1]; {恢复魔法值}
ms[2,ti]:=ms[2,ti-1]+4;
end;
if ts[ti-1]+17>ms[1,ti] then ts[ti]:=ts[ti-1]+17 else ts[ti]:=ms[1,ti]; {找出大的值} */
if ts[ti]>=s then {如果顺利逃出,输出结果}
begin
writeln('Yes');
writeln(ti);
close(input);
close(output);
halt;
end;
end;
writeln('No'); {无法逃出,输出结果}
writeln(ts[t]);
close(input);
close(output);
end.
我用 /* */ 括起来的那段中,再For循环内,为什么同一秒钟做了两件事情(恢复魔法值 和 跑步)?有谁知道?
关于NOIP2007 的第三题的解program a3_2(input,output);varm,s,t,ti:longint;ms:array[1..2,0..300000] of longint; ts:array[0..300000] of longint; beginassign(input,'escape.in');assign(output,'escape.out');reset(input);rewrite(output);readln(m,s,t)
写的太麻烦了 有不开数组的写法
你是用两个数组记录过程,这本身就把两个过程分开了,一个是专用魔法的,一个是跑步加用魔法的,是有的做了两件事,但是两件事好像是分开储存的
总体意思就是就算一秒做了两件事也是互不影响的,相当于取决策的时候还是只决策了一件事