LIGNJA
DP题,最大空闲等于N-最小花费,这个存储方式倒是挺特别。
代码:
type
link=^node;
node=record
x,t:longint;
next:link;
end;
var
g:array[1..10001] of link;
f:array[1..10001] of longint;
n,k:longint;
procedure connect(a,t:longint);
var
p:link;
begin
new(p);
p^.x:=a+t; p^.t:=t;
p^.next:=g[a]; g[a]:=p;
end;
procedure main;
var
i,a,t:longint;
p:link;
begin
readln(n,k);
for i:=1 to k do begin
readln(a,t);
connect(a,t);
end;
fillchar(f,sizeof(f),0);
for i:=n downto 1 do
if g[i]=nil then f[i]:=f[i+1]
else begin
f[i]:=maxlongint;
p:=g[i];
while p<>nil do begin
if p^.t+f[p^.x]<f[i] then f[i]:=p^.t+f[p^.x];
p:=p^.next;
end;
end;
write(n-f[1]);
end;
begin
main;
end.