[HEOI 2016] seq


题解:
发现多决策且明显无后效性,果断dp,那么转移方程F[i]=F[j]+1
设R[I]为改变之后的最大值,L[i]为改变之后的最小值
由于只能改变一个元素 所以转移的条件是 (j<i && R[j]<a[i] && a[j]<L[i]) 写成这样 就光然大悟 裸三维偏序诶
于是CDQ 乱搞即可 人懒不想打归并...
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
const int N=,INF=2e8;
int gi(){
int str=;char ch=getchar();
while(ch>'' || ch<'')ch=getchar();
while(ch>='' && ch<='')str=(str<<)+(str<<)+ch-,ch=getchar();
return str;
}
int n,m,f[N];
struct node{
int x,L,R,id;
}a[N];
bool compid(const node &px,const node &qx){
return px.id<qx.id;
}
bool compL(const node &px,const node &qx){
return px.L<qx.L;
}
bool compx(const node &px,const node &qx){
return px.x<qx.x;
}
int Tree[N<<],st[N<<],top=;
void add(int sta,int x){
for(int i=sta;i<=n;i+=(i&(-i))){if(x>Tree[i])Tree[i]=x;}
}
int query(int sta){
int ret=;
for(int i=sta;i>=;i-=(i&(-i)))if(Tree[i]>ret)ret=Tree[i];
return ret;
}
void Clear(int sta){
for(int i=sta;i<=n;i+=(i&(-i)))Tree[i]=;
}
int ans=;
void cdq(int l,int r){
if(l==r)return ;
int mid=(l+r)>>;
cdq(l,mid);
sort(a+l,a+mid+,compx);sort(a+mid+,a+r+,compL);
int t1=l,t2=mid+;
while(t1<=mid && t2<=r){
if(a[t1].x<=a[t2].L)st[++top]=a[t1].R,add(a[t1].R,f[a[t1].id]),t1++;
else f[a[t2].id]=max(f[a[t2].id],query(a[t2].x)+),t2++;
}
while(t2<=r){
f[a[t2].id]=max(f[a[t2].id],query(a[t2].x)+);t2++;
}
while(top)Clear(st[top--]);
sort(a+mid+,a+r+,compid);
cdq(mid+,r);
}
void work(){
int x,y;
n=gi();m=gi();
for(int i=;i<=n;i++)a[i].x=gi(),a[i].L=a[i].R=a[i].x,a[i].id=i,f[i]=;
for(int i=;i<=m;i++){
x=gi();y=gi();
if(y>a[x].R)a[x].R=y;
if(y<a[x].L)a[x].L=y;
}
cdq(,n);
for(int i=;i<=n;i++)if(f[i]>ans)ans=f[i];
printf("%d\n",ans);
}
int main()
{
freopen("heoi2016_seq.in","r",stdin);
freopen("heoi2016_seq.out","w",stdout);
work();
return ;
}
[HEOI 2016] seq的更多相关文章
- [COGS2427][HZOI 2016]seq
[COGS2427][HZOI 2016]seq 题目大意: 一个长度为\(n(n\le10^6)\)的序列,\(q(q\le10^6)\)次操作,每次将所有\(a\)变成\(b\),求最后的序列. ...
- [HEOI 2016] sort
[HEOI 2016] sort 解题报告 码线段树快调废我了= = 其实这题貌似暴力分很足,直接$STL$的$SORT$就能$80$ 正解: 我们可以二分答案来做这道题 假设我们二分的答案为$a$, ...
- HEOI 2016 游记
闲来无事,把这玩意儿补上. OI生涯中第一次正经的考试.挂的很惨. Day -1 不小心把机油(雾)sm惹毛了. 好像没啥别的事儿. Day 0 说好了上午直接去机房,然而临时说让我们上完前两节课再去 ...
- [TJOI 2016&HEOI 2016]排序
Description 在2016年,佳媛姐姐喜欢上了数字序列.因而他经常研究关于序列的一些奇奇怪怪的问题,现在他在研究一个难题 ,需要你来帮助他.这个难题是这样子的:给出一个1到n的全排列,现在对这 ...
- 数据结构(并查集||树链剖分):HEOI 2016 tree
[注意事项] 为了体现增强版,题目限制和数据范围有所增强: 时间限制:1.5s 内存限制:128MB 对于15% 的数据,1<=N,Q<=1000. 对于35% 的数据,1<=N,Q ...
- 字符串[未AC](后缀自动机):HEOI 2016 str
超级恶心,先后用set维护right,再用主席树维护,全部超时,本地测是AC的.放心,BZOJ上还是1S限制,貌似只有常数优化到一定境界的人才能AC吧. 总之我是精神胜利了哦耶QAQ #include ...
- [TJOI 2016&HEOI 2016]求和
Description 题库链接 求 \[f(n)=\sum_{i=0}^n\sum_{j=0}^i S(i,j)\times 2^j \times (j!)\] \(S(i, j)\) 表示第二类斯 ...
- 解题:HEOI 2016 求和
题面 我们需要知道这样一个东西(大概叫 斯特林公式?) $S(i,j)=\frac{1}{j!}\sum\limits_{k=0}^{j}(-1)^k C_j^k(j-k)^i$ 那么就是推啊 $=\ ...
- [ HEOI 2016 ] 树
\(\\\) Description 给出一颗树,开始只有 \(1\) 号节点有标记. \(\ C\ x\) 对 \(x\) 号节点打标记 \(\ Q\ x\) 查询 \(x\) 号节点深度最深的有标 ...
随机推荐
- Windows下编译SDL
Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...
- iOS开发之Objective-C与JavaScript的交互
UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS ...
- python3爬虫之入门和正则表达式
前面的python3入门系列基本上也对python入了门,从这章起就开始介绍下python的爬虫教程,拿出来给大家分享:爬虫说的简单,就是去抓取网路的数据进行分析处理:这章主要入门,了解几个爬虫的小测 ...
- python 操作Memcached
启动Memcached memcached -d -m 10 -u root -l 10.211.55.4 -p 12000 -c 256 -P /tmp/memcached.pid 参数说明: -d ...
- SQL常用语句,随时用随时更新
更多详细说明文档查询 http://www.postgres.cn/docs/9.5/infoschema-columns.html 1.1通过表名查询表的属性 SELECT * FROM sys.s ...
- JAVA类的方法调用和变量(全套)
一.类的分类: 1.普通类 2.抽象类(含有抽象方法的类) 3.静态类(不需要实例化,就可以使用的类) 二.方法的分类: 1.私有方法(只有类的内部才可以访问的方法) 2.保护方法(只有类的内部和该该 ...
- JAVA_SE基础——编码规范&代码编写规则
这次我来给大家说明下编码规范&代码编写规则 ↓ 编码规范可以帮助程序员在编程时注意一些细节问题,提高程序的可读性,让程序员能够尽快地理解新的代码,并帮助大家编写出规范的利于维护的Java代码 ...
- Delphi Web开发连载 --ThinkDelphi (序)
如果把Delphi比作男人,那他曾经独步天下,笑傲江湖过: 如果把Delphi比作女子,那她曾经貌美如花,倾国倾城过! 但那只是历史,那只是曾经, 弹指一挥间,Delphi却似乎英雄迟暮,美人已老.. ...
- Python之面向对象三
面向对象的三大特性: 多态 多态指的是一类事物有多种形态.Python3天生支持多态. 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCM ...
- TreeMap就这么简单【源码剖析】
前言 声明,本文用得是jdk1.8 前面章节回顾: Collection总览 List集合就这么简单[源码剖析] Map集合.散列表.红黑树介绍 HashMap就是这么简单[源码剖析] LinkedH ...
