T3:打了个错误的dp得了10分。
正解:f[j,i]表示跳到i用了j步 。方程
if i+j<=n then f[i,j]:=min(f[i,j],f[i,j+i]+t[j]);
if j-I > 0 then f[i,j]:=min(f[i,j],f[i-1,j-i]+t[j]);
1<=i<=n;
n>=j>=1;
uses
math;
var
f:array[0..2000,0..2000] of longint;
t:array[0..10000]of longint;
n,i,j,ans:longint;
procedure dfs;
begin
if i+j<=n then
f[i,j]:=min(f[i,j],
f[i,j+i]+t[j]);
if j-i >0 then
f[i,j]:=min(f[i,j],
f[i-1,j-i]+t[j]);
end;
begin
//assign(input,'c.in');reset(input);
//assign(output,'c.out');rewrite(output);
read(n);
for i:=1 to n do
read(t[i]);
//close(input);
for i:=0 to 2000 do
for j:=0 to 2000 do
f[i,j]:=maxlongint div 2;
f[0,1]:=0;
ans:=maxlongint;
for i:=1 to n do
begin
for j:=n downto 1 do
begin
dfs;
end;
if f[i,n]<ans then
ans:=f[i,n];
end;
writeln(ans);
//close(output);
end.