博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3173: [Tjoi2013]最长上升子序列
阅读量:6118 次
发布时间:2019-06-21

本文共 1989 字,大约阅读时间需要 6 分钟。

先求出最终的序列,然后树状数组求出每一个询问的答案。

1.求最终序列可以用sbt。插入到位置x时如果比左子树的size大就插入到右子树中,否则就插入到左子树中。

1   if x<=size[l[t]] then2     insert(x,l[t])3   else insert(x-size[l[t]]-1,r[t]);

2.求每一个询问的答案。

  f[i]为当前到这个数的最长上升子序列。查询这个数的最终位置之前的最大的f[j]为max,f[i]=max+1;

  ans[i]=max(f[i],ans[i-1]);

for i:=1 to n do  begin  f[i]:=1+search(se[i]);  change(se[i],f[i]);  ans[i]:=max(ans[i-1],f[i]);  end;

这个题sbt写maintain比bst慢。。。。。

RunID User Problem Result Memory Time Language Code_Length Submit_Time
412076 Accepted 4132 kb 1080 ms / 1452 B 2013-05-14 15:27:29
1 var 2   ans,se,f,b,c,x,l,r,size,a:array[1..100000]of longint; 3   k,nn,root,n,i,j:longint; 4 function max(aa,bb:longint):longint; 5   begin 6   if aa>bb then exit(aa) else exit(bb); 7   end; 8 function new(x:longint):longint; 9   begin10   inc(nn);a[nn]:=x;size[nn]:=1;exit(nn);11   end;12 procedure insert(x:longint; var t:longint);13   begin14   if t=0 then15     begin16     t:=new(x);17     exit;18     end;19   if x<=size[l[t]] then20     insert(x,l[t])21   else insert(x-size[l[t]]-1,r[t]);22   inc(size[t]);23   end;24 procedure print(t:longint);25   begin26   if t=0 then exit;27   print(l[t]);28   inc(k);b[k]:=t;29   print(r[t]);30   end;31 function lowbit(x:longint):longint;32   begin exit(x and (-x));33   end;34 procedure change(x,a:longint);35   begin36   while x<=n do37     begin38     c[x]:=max(c[x],a);39     inc(x,lowbit(x));40     end;41   end;42 function search(x:longint):longint;43   begin44   search:=0;45   while x>0 do46     begin47     search:=max(search,c[x]);48     dec(x,lowbit(x));49     end;50   end;51 begin52   readln(n);53   for i:=1 to n do54     begin55     read(x[i]);56     insert(x[i],root);57     end;58   k:=0;print(root);59   for i:=1 to n do60     se[b[i]]:=i;61   for i:=1 to n do62     begin63     f[i]:=1+search(se[i]);64     change(se[i],f[i]);65     ans[i]:=max(ans[i-1],f[i]);66     end;67   for i:=1 to n do writeln(ans[i]);68   end.
View Code

 

 

转载于:https://www.cnblogs.com/lbz007oi/archive/2013/05/14/3078085.html

你可能感兴趣的文章
【HDU】6012 Lotus and Horticulture (BC#91 T2)
查看>>
redis日常使用汇总--持续更新
查看>>
Linux 安装 JDK
查看>>
leetcode-283-Move Zeroes
查看>>
Docker Data Center系列(二)- UCP安装指南
查看>>
Vue 计算属性与侦听器
查看>>
UITableView汇总
查看>>
Protractor的安装及其遇到的问题
查看>>
【转】C#中ToString格式大全
查看>>
Android缓存图片,在系统图库却看不见。怎么做到的?答:新建“.nomedia”的文件即可。...
查看>>
eclipse中在整个工程中查找一个字符串的步骤
查看>>
数据类型转换
查看>>
[转] Android开发者必备的42个链接
查看>>
16.Java5的CountDownLatch同步工具
查看>>
centos7.2环境下安装smokeping对网络状态进行监控
查看>>
zabbix通过php脚本模拟业务访问redis验证nosql的可用性
查看>>
【算法学习笔记】04.C++中结构体定义练习(bign初步)
查看>>
mac os idea的快捷键
查看>>
Java虚拟机(四)--垃圾回收
查看>>
js打开新窗口与页面跳转的几种方法
查看>>