请在 下方输入 要搜索的题目:

在一条水平路边,有n(2≤n≤25)个钓鱼湖,从左到右编号分别为为1,2,3,…,n。佳佳有H(1≤H≤16)个小时的空余时间,他希望用这些时间钓到尽量多的鱼,他从湖1出发向右走,有选择的在一些湖边停留一定的时间钓鱼,最后在某一个湖边结束钓鱼。佳佳测出从第i个湖到第i 1需要走5Ti分钟的路,还测出在第i个湖停留:第一个5分钟可以钓到鱼Fi,以后再每钓5分钟鱼,鱼量减少Di.。为了简化问题,佳佳假定没有其他人钓鱼,也不会有其他因素影响他钓到期望数量的鱼。给出能钓到最多鱼的方案。

在一条水平路边,有n(2≤n≤25)个钓鱼湖,从左到右编号分别为为1,2,3,…,n。佳佳有H(1≤H≤16)个小时的空余时间,他希望用这些时间钓到尽量多的鱼,他从湖1出发向右走,有选择的在一些湖边停留一定的时间钓鱼,最后在某一个湖边结束钓鱼。佳佳测出从第i个湖到第i 1需要走5Ti分钟的路,还测出在第i个湖停留:第一个5分钟可以钓到鱼Fi,以后再每钓5分钟鱼,鱼量减少Di.。为了简化问题,佳佳假定没有其他人钓鱼,也不会有其他因素影响他钓到期望数量的鱼。给出能钓到最多鱼的方案。

发布时间:2025-08-06 15:34:02
推荐参考答案 ( 由 快搜搜题库 官方老师解答 )
联系客服
答案:答:type arr=array[1..60]of longint; var  f,d,ans,t:arr;     n,h,max:longint;     i:longint; procedure work; var i,j,k,now,m,sum,p:longint;     tmp,num:arr; begin  for k:=1 to n do   if h>=t[k] then   begin    tmp:=f;now:=(h-t[k])div 5;    sum:=0;    fillchar(num,sizeof(num),0);    for i:=1 to now do     begin      m:=-1;p:=0;      for j:=1 to k do       if tmp[j]>m then        begin m:=tmp[j];p:=j; end;      inc(sum,m);      inc(num[p],5);      if tmp[p]max then     begin max:=sum;ans:=num; end;   end; end; begin readln(n); while n<>0 do begin readln(h); h:=h*60; for i:=1 to n do  read(f[i]); for i:=1 to n do  read(d[i]); for i:=2 to n do  begin   read(t[i]);   t[i]:=t[i-1] t[i]*5;  end; max:=-1; work; for i:=1 to n do  if i<>n then write(ans[i],', ')  else writeln(ans[i]); writeln('Number of fish expected: ',max); readln(n); if n<>0 then writeln; end;end.
专业技术学习
专业技术学习
搜搜题库系统