49 lines
1.4 KiB
Plaintext
49 lines
1.4 KiB
Plaintext
program fishing2; //¶¯Ì¬¹æ»®
|
|
const maxT = 1000;
|
|
maxF = 1000;
|
|
maxN = 100;
|
|
type nodeP = record
|
|
fish,delta,time:longint;
|
|
end;
|
|
var Fishing:array[0..maxF+1] of longint;
|
|
Opt,tOpt:array[0..maxT] of longint;
|
|
Pound:array[1..maxN] of nodeP;
|
|
ans,n,t,i:longint;
|
|
|
|
procedure Doit;
|
|
var i,j,k,tmp:longint;
|
|
begin
|
|
for i:=1 to n do
|
|
with pound[i] do
|
|
begin
|
|
for j:=0 to t do tOpt[j]:=-maxlongint;
|
|
fillchar(Fishing,sizeof(Fishing),0);
|
|
for j:=1 to fish div delta+1 do
|
|
Fishing[j]:=Fishing[j-1]+fish-(j-1)*delta;
|
|
for j:=0 to t do
|
|
for k:=0 to fish div delta+1 do
|
|
if (j+k+time)<=t then
|
|
begin
|
|
tmp:=Opt[j]+Fishing[k];
|
|
if tmp>tOpt[j+k+time] then tOpt[j+k+time]:=tmp;
|
|
if tmp>ans then ans:=tmp;
|
|
end;
|
|
Opt:=tOpt;
|
|
end
|
|
end;
|
|
|
|
begin //main
|
|
assign(input,'fishing.in'); reset(input);
|
|
assign(output,'fishing.out'); rewrite(output);
|
|
readln(n);
|
|
for i:=1 to n do read(pound[i].fish); readln;
|
|
for i:=1 to n do read(pound[i].delta); readln;
|
|
for i:=1 to n-1 do read(pound[i+1].time); readln;
|
|
readln(t);
|
|
ans:=-maxlongint;
|
|
Doit; //¶¯Ì¬¹æ»®¹ý³Ì
|
|
writeln(ans);
|
|
close(input); close(output)
|
|
end.
|
|
|