恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者

恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者
在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这
个荒岛施咒,这座岛很快就会沉下去。到那时,岛上的所有人都会遇难。守望者的跑步速度为
17m/s,以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不
过每次使用闪烁法术都会消耗魔法值10点。守望者的魔法值恢复的速度为4点/s,只有处在原地
休息状态时才能恢复。
现在已知守望者的魔法初值M,他所在的初始位置与岛的出口之间的距离S,岛沉没的时间T。
你的任务写写一个程序帮助守望者计算如何在最短的时间内逃离荒岛,若不能逃出,则输出守望
者在剩下的时间能走的最远距离。注意:守望者跑步、闪烁或休息活动均以秒(s)为单位,且每
次活动的持续时间为整数秒。距离的单位为米(m)。

第1个回答  2010-03-27
哇~~塞~~太好玩啦!!!顶个~ 不过demon是因为被族人先背叛在变成恶魔在背叛的!!
第2个回答  2010-03-26
魔兽不能把
第3个回答  2010-03-26
  program asd;
  var f:array[0..300000,1..2,1..2]of longint;
  i,j,n,m,s,t,t1:longint;
  function max(a,b:longint):longint;
  begin
  if a>b then max:=a
  else max:=b;
  if max=8999 then max:=9000;
  end;
  begin
  readln(m,s,t);
  fillchar(f,sizeof(f),0);
  f[1,1,1]:=17;f[1,1,2]:=m;
  if m>=10 then begin f[1,2,1]:=60;f[1,2,2]:=m-10;end
  else begin f[1,2,1]:=0;f[1,2,2]:=m+4;end;
  t1:=0;
  i:=1;
  if (f[i,1,1]>=s)or(f[i,2,1]>=s) then begin t1:=1;end
  else begin
  for i:=2 to t do begin
  f[i,1,1]:=f[i-1,1,1]+17;
  f[i,1,2]:=f[i-1,1,2];
  if f[i,1,1]<f[i-1,2,1]+17 then begin
  f[i,1,1]:=f[i-1,2,1]+17;
  f[i,1,2]:=f[i-1,2,2];
  end;
  f[i,2,1]:=f[i-1,2,1];
  f[i,2,2]:=f[i-1,2,2]+4;
  if (f[i-1,2,2]>=10)and(f[i-1,2,1]+60>f[i,2,1]) then begin
  f[i,2,2]:=f[i-1,2,2]-10;
  f[i,2,1]:=f[i-1,2,1]+60;
  end;
  if f[i-1,1,2]>=10 then begin
  if f[i-1,1,1]+60>f[i,2,1]then begin
  f[i,2,1]:=f[i-1,1,1]+60;
  f[i,2,2]:=f[i-1,1,2]-10;
  end;
  end;
  if (f[i,1,1]>=s)or(f[i,2,1]>=s) then begin t1:=1;break;end;
  end;
  end;
  if t1=0 then begin
  writeln('No');
  writeln(max(f[i,1,1],f[i,2,1]));
  end
  else begin
  writeln('Yes');
  writeln(i);
  end;
  end.本回答被提问者采纳