其思想是维护单调递增的最优数列
做到不下降,但是又可以尽量延伸
以tyvj1067为例
var n,i,j:longint;
a,f1,f2:array[0..10000]of longint;
function max(a,b:longint):longint;begin if a>b then exit(a);exit(b);end;
begin
readln(n);
for i:=1 to n do
read(a[i]);
f1[n]:=1;
for i:=n-1 downto 1 do
begin
for j:=i+1 to n do
if a[i]>a[j] then
f1[i]:=max(f1[i],f1[j]);
inc(f1[i]);
end;
f2[1]:=1;
for i:=2 to n do
begin
for j:=1 to i-1 do
if a[i]<a[j] then
f2[i]:=max(f2[i],f2[j]);
inc(f2[i]);
end;
for i:=1 to n do
a[0]:=max(a[0],f1[i]+f2[i]);
writeln(n-a[0]);
end.