当年我还没学cdq的时候在luogu上写过树套树的代码orzzz

ref

#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;
int n, m, uu, vv, dp[100005], c[100005];
struct Node{
int val, zxz, zdz, idx;
}nd[100005], tmp[100005];
bool cmpzxz(Node x, Node y){
return x.zxz<y.zxz;
}
bool cmpidx(Node x, Node y){
return x.idx<y.idx;
}
int lb(int x){
return x&-x;
}
void add(int x, int v){
for(; x<=100000; x+=lb(x))
c[x] = max(c[x], v);
}
int query(int x){
int re=0;
for(; x; x-=lb(x))
re = max(re, c[x]);
return re;
}
void clr(int x){
for(; x<=100000; x+=lb(x))
c[x] = 0;
}
void cdq(int l, int r){
if(l==r) return ;
int mid=(l+r)>>1;
cdq(l, mid);
sort(nd+mid+1, nd+r+1, cmpzxz);
int qaq=l;
for(int i=mid+1; i<=r; i++){
while(qaq<=mid && nd[qaq].val<=nd[i].zxz){
add(nd[qaq].zdz, dp[nd[qaq].idx]);
qaq++;
}
dp[nd[i].idx] = max(dp[nd[i].idx], query(nd[i].val)+1);
}
for(int i=l; i<qaq; i++) clr(nd[i].zdz);
sort(nd+mid+1, nd+r+1, cmpidx);
cdq(mid+1, r);
int jj=l, kk=mid+1;
for(int i=l; i<=r; i++)
if(jj<=mid && (kk>r || nd[jj].val<=nd[kk].val)) tmp[i] = nd[jj++];
else tmp[i] = nd[kk++];
for(int i=l; i<=r; i++)
nd[i] = tmp[i];
}
int main(){
cin>>n>>m;
for(int i=1; i<=n; i++){
scanf("%d", &nd[i].val);
nd[i].zdz = nd[i].zxz = nd[i].val;
nd[i].idx = i;
dp[i] = 1;
}
for(int i=1; i<=m; i++){
scanf("%d %d", &uu, &vv);
nd[uu].zdz = max(nd[uu].zdz, vv);
nd[uu].zxz = min(nd[uu].zxz, vv);
}
cdq(1, n);
int ans=0;
for(int i=1; i<=n; i++)
ans = max(ans, dp[i]);
cout<<ans<<endl;
return 0;
}

loj2056 「TJOI / HEOI2016」序列的更多相关文章

  1. 【LOJ】#2056. 「TJOI / HEOI2016」序列

    题解 这个我们处理出来每一位能变化到的最大值和最小值,包括自身 然后我们发现 \(f[i] = max(f[i],f[j] + 1) (mx[j] <= a[i] && a[j] ...

  2. loj #2055. 「TJOI / HEOI2016」排序

    #2055. 「TJOI / HEOI2016」排序   题目描述 在 2016 年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他. 这个 ...

  3. loj#2054. 「TJOI / HEOI2016」树

    题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...

  4. 「TJOI / HEOI2016」字符串

    「TJOI / HEOI2016」字符串 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 \(n\) 的字符串 \(s\),和 ...

  5. AC日记——#2054. 「TJOI / HEOI2016」树

    #2054. 「TJOI / HEOI2016」树 思路: 线段树: 代码: #include <cstdio> #include <cstring> #include < ...

  6. AC日记——#2057. 「TJOI / HEOI2016」游戏 LOJ

    #2057. 「TJOI / HEOI2016」游戏 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include &l ...

  7. loj2058 「TJOI / HEOI2016」求和 NTT

    loj2058 「TJOI / HEOI2016」求和 NTT 链接 loj 思路 \[S(i,j)=\frac{1}{j!}\sum\limits_{k=0}^{j}(-1)^{k}C_{j}^{k ...

  8. 【LOJ】#2055. 「TJOI / HEOI2016」排序

    题解 看错题了,我以为是询问Q是个数字,问它在哪个位置 我一想这不直接01序列搞一下就好了嘛(事实上是012) 然后呢,我发现样例没过. 啊我看错题了,问的是Q这个位置是啥-- 哦,套用我之前的想法不 ...

  9. LOJ #2058「TJOI / HEOI2016」求和

    不错的推柿子题 LOJ #2058 题意:求$\sum\limits_{i=0}^n\sum\limits_{j=0}^nS(i,j)·2^j·j!$其中$ S(n,m)$是第二类斯特林数 $ Sol ...

随机推荐

  1. 从零开始的全栈工程师——js篇2.13(案例存放:三重数组渲染)

  2. while循环,break和continue,运算符,格式化输出

    一丶while循环 while条件: 代码块(循环体) #数数 打印1-100 count = 1 while count <= 100: print(count) count += 1 执行顺 ...

  3. 【web】movie review——静态页面训练、css训练

    实现样式要求: image: banner.png: generaloverview.png: background.png: bannerbackground.png: rottenbig.png: ...

  4. Spring Boot概要

    1.Spring Boot使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置)的理念,使用户的项目实现快速运行.通过学习Spring Boot中的配置文件application. ...

  5. Nagios-4.1.1 (OpenLogic CentOS 7.2)

    平台: CentOS 类型: 虚拟机镜像 软件包: apache2.4.6 nagios 4.1.1 php5.4.16 devops monitoring nagios open-source ph ...

  6. mysql服务器系统优化

    1.选择合适的IO调度 对于mysql的系统,如果是SSD,那么应该使用NOOP调度算法,如果是磁盘,就应该使用Deadline调度算法.默认是CFQ echo dealine > /sys/b ...

  7. 标准IO ——将A文件fpd第3个字节之后的内容复制到文件fps

    /* *使用标准IO ——将A文件fpd第3个字节之后的内容复制到文件fps 流程: 1.创建两个流,链接目标文件和源文件 2.输入流的基准点偏移四个单位然后输入缓冲区 3.输出流读取缓冲区数据送入文 ...

  8. pat乙级1060

    将数组排序后从大到小遍历,设置一个递增的变量t,当v[i] > t的时候,说明有t个数大于t,最后一个满足v[i] > t的t即为所求结果. #include <iostream&g ...

  9. linux 命令——19 find (转)

    Linux 下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所 以它的选项也很多,其中大部分选项都值得我们 ...

  10. Object.prototype.toString的应用

    使用Object.prototype上的原生toString()方法判断数据类型,使用方法如下: Object.prototype.toString.call(value)1.判断基本类型: Obje ...