loj2056 「TJOI / HEOI2016」序列
当年我还没学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」序列的更多相关文章
- 【LOJ】#2056. 「TJOI / HEOI2016」序列
题解 这个我们处理出来每一位能变化到的最大值和最小值,包括自身 然后我们发现 \(f[i] = max(f[i],f[j] + 1) (mx[j] <= a[i] && a[j] ...
- loj #2055. 「TJOI / HEOI2016」排序
#2055. 「TJOI / HEOI2016」排序 题目描述 在 2016 年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题,需要你来帮助他. 这个 ...
- loj#2054. 「TJOI / HEOI2016」树
题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...
- 「TJOI / HEOI2016」字符串
「TJOI / HEOI2016」字符串 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为 \(n\) 的字符串 \(s\),和 ...
- AC日记——#2054. 「TJOI / HEOI2016」树
#2054. 「TJOI / HEOI2016」树 思路: 线段树: 代码: #include <cstdio> #include <cstring> #include < ...
- AC日记——#2057. 「TJOI / HEOI2016」游戏 LOJ
#2057. 「TJOI / HEOI2016」游戏 思路: 最大流: 代码: #include <cstdio> #include <cstring> #include &l ...
- 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 ...
- 【LOJ】#2055. 「TJOI / HEOI2016」排序
题解 看错题了,我以为是询问Q是个数字,问它在哪个位置 我一想这不直接01序列搞一下就好了嘛(事实上是012) 然后呢,我发现样例没过. 啊我看错题了,问的是Q这个位置是啥-- 哦,套用我之前的想法不 ...
- 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 ...
随机推荐
- 根据accept-language自动设置UICulture和Culture
在web.config中添加如下配置: <system.web> <globalization uiCulture="auto" culture="au ...
- 无法通过CTRL+空格及SHIFT+CTRL调出输入法的解决方案
打开任务管理器: 运行:CTFMON.EXE
- vue+node+mongodb实现的页面
源代码地址:https://github.com/GainLoss/vue-node-mongodb 目前这个项目实现的是: 1.利用vue-cli实现前台页面的编写 (1)页面的跳转利用的是vue- ...
- 【BZOJ2809】[APIO2012] dispatching(左偏树例题)
点此看题面 大致题意: 有\(N\)名忍者,每名忍者有三个属性:上司\(B_i\),薪水\(C_i\)和领导力\(L_i\).你要选择一个忍者作为管理者,然后在所有被他管理的忍者中选择若干名忍者,使薪 ...
- 2018.10.26 NOIP2018模拟赛 解题报告
得分: \(0+10+10=20\)(\(T1\)死于假题面,\(T3\)死于细节... ...) \(P.S.\)由于原题是图片,所以我没有上传题目描述,只有数据. \(T1\):颜料大乱斗(点此看 ...
- ubuntu安装R时候增加软件源到sources.list,sudo apt-get update不能更新
http://forum.ubuntu.org.cn/viewtopic.php?t=401717 ubuntu安装R时候增加软件源到sources.list,sudo apt-get update不 ...
- maven手动导入jar包到本地仓库
一.cmd进入maven的bin目录下(我的目录是E:\cloud_cms\apache-maven-3.5.4\bin) cd E:\cloud_cms\apache-maven-3.5.4\bin ...
- webSocket使用心跳包实现断线重连
首先new一个webscoket的连接 let noticeSocketLink = new WebSocket(‘webSocket的地址’) 这里是连接成功之后的操作 linkNoticeWebs ...
- .NET中变量生存期
Web窗体后台 cs 文件中,创建类作用域的变量,在关闭页面的时候并不会消失,当 IIS 站点被关闭的时候,才会调用这个变量的析构函数 但是好像也不肯定在关闭站点才会析构,应该是外层对象析构的时候才会 ...
- LGTB 学分块
总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 LGTB 最近在学分块,但是他太菜了,分的块数量太多他就混乱了,所以只能分成 3 块 今天他得 ...