合唱队形
来源:互联网 发布:win32 api编程入门pdf 编辑:程序博客网 时间:2024/04/29 23:48
合唱队形
(chorus.pas/c/cpp)
来源:NOIP2004(提高组) 第一题
【输入文件】
【输出文件】
【样例输入】
8
186 186 150 200 160 130 197 220
【样例输出】
4
【数据规模】
对于50%的数据,保证有n<=20;
对于全部的数据,保证有n<=100。
==================================
其实是最长不下降序列和上升序列
=================================
{ID:jie19952PROG:LANG:PASCAL}var n:longint; a:array[1..100]of longint; f_up,f_down:array[0..101]of longint;procedure init;begin assign(input,'chorus.in'); assign(output,'chorus.out'); reset(input); rewrite(output);end;procedure terminate;begin close(input); close(output); halt;end;procedure main;var i,j:longint; ans:longint;begin readln(n); for i:=1 to n do begin read(a[i]); f_up[i]:=1; f_down[i]:=1; end; f_up[0]:=0; f_up[n+1]:=0; f_down[0]:=0; f_down[n+1]:=0; for i:=1 to n do begin for j:=i-1 downto 1 do if (a[i]>a[j]) and (f_up[i]<f_up[j]+1) then begin f_up[i]:=f_up[j]+1; end; end; for i:=n downto 1 do begin for j:=i+1 to n do if (a[i]>a[j]) and (f_down[i]<f_down[j]+1) then begin f_down[i]:=f_down[j]+1; end; end; ans:=0; for i:=1 to n do begin if ans<f_up[i]+f_down[i]-1 then ans:=f_up[i]+f_down[i]-1; end; writeln(n-ans);end;begin init; main; terminate;end.