用户ID: 密码: 验证:

登 录

注 册 取回密码

中山教育

中山国际网

中国教育在线

时代财富科技公司 FortuneAge Technology Co., Ltd. 校园博客客服网站(新)

我的资料

Mpq

博客信息

积分:988
等级:4级 lv 4
日志总数:231
发表评论总数:18 ( 查看)
获得评论总数:21
发表留言总数:0
所属学校:三鑫
收藏本站:

最新公告

欢迎光临我的博客!

最新相册

我的日历

最新评论

--游客
好文好文,是您的手笔?如果是您的文章,如果您愿意和我联系,...
还有就是数学不能使用计算器…….......在读初中之前原...
--Mpq
这次似乎不举行冬季长跑……看来在三鑫参加的体育项目最终是以...
--Mpq
看了你的"总结", 挺有针对性的! 相信下学期你一定会有...

RSS


首页 -> 经典算法->最长不下降序列
最长不下降序列

program Lis_Mpq;

var
  i,n,m,Max_Len,Max_Ans:longint;
  a,f,Ans:array[0..100000] of longint;

procedure init;
var
  i:longint;
begin
  readln(n);
  for i:=1 to n do readln(a[i]);
  Max_Len:=0; Max_Ans:=0;
end;

procedure Lis;
var
  i,Min,Max,Len:longint;
begin
  Len:=0;
  for i:=n downto 1 do
  begin
    Min:=1; Max:=Len;
    while Min<=Max do
    begin
      m:=(Min+Max) div 2;
      if a[i]<a[f[m]] then
        Min:=M+1 else
        Max:=M-1;
    end;
    f[Min]:=i;
    if Min>Len then Len:=Min;
    if Min>1 then Ans[i]:=f[Min-1] else Ans[i]:=0;
    if Len>Max_Len then
    begin
      Max_Len:=Len;
      Max_Ans:=i;
    end;
  end;
end;

procedure print;
var
  i:longint;
begin
  writeln('Max_Len=',Max_Len);
  for i:=1 to Max_Len do
  begin
    write(a[Max_Ans],' ');
    Max_Ans:=Ans[Max_Ans];
  end;
  writeln;
end;

begin
assign(input,'Lis.in'); reset(input);
assign(output,'Lis.out'); rewrite(output);
  init;
  Lis;
  print;
close(input); close(output);
end.

网友评论

共 0 页,0 条记录  

用户名:
密码:
您的评论:
正在载入编辑器...
请输入验证码:


发 表 评 论

Mpq-中山教师家园