Lis的nlogn算法

来源:互联网 发布:免流网站源码 编辑:程序博客网 时间:2024/06/02 13:22

 

其思想是维护单调递增的最优数列

做到不下降,但是又可以尽量延伸

以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.


 

原创粉丝点击