启迪noip刷题吧 关注:3贴子:24
  • 1回复贴,共1

合唱队形(简单但易错)

只看楼主收藏回复

program hcdx;
var
a,b,c:array[1..10000] of integer;
max,i,j,n:longint;
begin
readln(n);
max:=-maxint;
for i:=1 to n do read(a[i]);
b[1]:=1;
c[n]:=1;
for i:=2 to n do
for j:=0 to i-1 do
if (a[i]>a[j]) and (b[j]+1>b[i]) then b[i]:=b[j]+1;
for i:=n-1 downto 1 do
for j:=n+1 downto i+1 do
if (a[i]>a[j]) and (c[j]+1>c[i]) then c[i]:=c[j]+1;
for i:=1 to n do if max<b[i]+c[i]-1 then max:=b[i]+c[i]-1;
writeln(n-max);
end.


IP属地:浙江1楼2018-08-18 10:33回复
    for j:=0 to i-1 do
    for j:=n+1 downto i+1 do
    第二重循环需要从大一个的数开始,否则部分特殊题答案会比正确值差一点


    IP属地:浙江3楼2018-08-18 10:39
    回复