题面

题解

很像最长不下降子序列对吧(废话)

设$up[i]$和$down[i]$分别表示$i$最大最小能取多少

注意到:

$$ f[i] = max_j\left\{f[j]\right\} + 1 \\ a[j] \leq down[i],\; up[j] \leq a[i],\; j \leq i $$

三位偏序!!!

$CDQ$分治走起

代码

#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#define RG register inline int read()
{
int data = 0, w = 1; char ch = getchar();
while(ch != '-' && (!isdigit(ch))) ch = getchar();
if(ch == '-') w = -1, ch = getchar();
while(isdigit(ch)) data = data * 10 + (ch ^ 48), ch = getchar();
return data * w;
} using std::max;
const int maxn(100010);
int n, m, a[maxn], up[maxn], down[maxn], c[maxn], f[maxn], Max;
inline bool cmp_1(int x, int y) { return a[x] < a[y]; }
inline bool cmp_2(int x, int y) { return down[x] < down[y]; }
void clean(int x) { while(x <= Max) c[x] = 0, x += x & -x; }
void add(int x, int v) { while(x <= Max) c[x] = max(c[x], v), x += x & -x; }
int query(int x)
{
int ans = 0;
while(x) ans = max(ans, c[x]), x -= x & -x;
return ans;
} void Div(int l, int r)
{
static int id[maxn];
if(l == r) return (void)(f[l] = max(f[l], 1));
int mid = (l + r) >> 1; Div(l, mid);
for(RG int i = l; i <= r; i++) id[i] = i;
std::sort(id + l, id + mid + 1, cmp_1);
std::sort(id + mid + 1, id + r + 1, cmp_2);
int j = l;
for(RG int i = mid + 1; i <= r; i++)
{
while(j <= mid && a[id[j]] <= down[id[i]]) add(up[id[j]], f[id[j]]), j++;
f[id[i]] = max(f[id[i]], query(a[id[i]]) + 1);
}
for(RG int i = l; i < j; i++) clean(up[id[i]]);
Div(mid + 1, r);
} int main()
{
n = read(), m = read();
for(RG int i = 1; i <= n; i++) up[i] = down[i] = a[i] = read();
for(RG int i = 1, x, y; i <= m; i++)
x = read(), y = read(),
up[x] = max(up[x], y),
down[x] = std::min(down[x], y);
Max = *std::max_element(up + 1, up + n + 1);
Div(1, n); printf("%d\n", *std::max_element(f + 1, f + n + 1));
return 0;
}

【HEOI2016】序列的更多相关文章

  1. BZOJ 4553 Tjoi2016&Heoi2016 序列

    Tjoi2016&Heoi2016序列 Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值 可能会变化,但同一个时刻最 ...

  2. 4553: [Tjoi2016&Heoi2016]序列

    4553: [Tjoi2016&Heoi2016]序列 链接 分析: 注意所有m此操作中,只会发生一个,于是考虑dp.dp[i]=dp[j]+1,j<i,a[j]<=L[i],R[ ...

  3. 【BZOJ4553】[Tjoi2016&Heoi2016]序列 cdq分治+树状数组

    [BZOJ4553][Tjoi2016&Heoi2016]序列 Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能 ...

  4. [BZOJ4553][HEOI2016]序列 CDQ分治

    4553: [Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec  Memory Limit: 128 MB Description 佳媛姐姐过生日的时候,她的小伙 ...

  5. [BZOJ4553][TJOI2016&&HEOI2016]序列(CDQ分治)

    4553: [Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1202  Solved: 554[Su ...

  6. [BZOJ4553][Tjoi2016&Heoi2016]序列 cdp分治+dp

    4553: [Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 260  Solved: 133[Sub ...

  7. bzoj4553 [Tjoi2016&Heoi2016]序列 树状数组(区间最大值)+cqd

    [Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 1006  Solved: 464[Submit][ ...

  8. BZOJ4553: [Tjoi2016&Heoi2016]序列

    Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值 可能会变化,但同一个时刻最多只有一个值发生变化.现在佳媛姐姐已经研究出了所 ...

  9. BZOJ4553: [Tjoi2016&Heoi2016]序列 树套树优化DP

    把pos[i]上出现的平常值定义为nor[i]最大值定义为max[i]最小值定义为min[i],那么我们发现在两个值,i(前),j(后),当且仅当max[i]<=nor[j],nor[i]< ...

  10. 【50.40%】【BZOJ 4553】[Tjoi2016&Heoi2016]序列

    Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 371  Solved: 187 [Submit][Status][Discuss] Descript ...

随机推荐

  1. [SQLServer] 数据库SA用户被锁定或者忘记密码的恢复

    一.以管理员权限运行命令提示符 CMD C:\>net stop mssqlserver您想继续此操作吗? (Y/N) [N]: y C:\>net start mssqlserver / ...

  2. 选中复选框,才能在文本框中输东西。button按钮已启用,

  3. Linux Transparent Huge Pages 对 Oracle 的影响

    1 Transparent Huge Pages 说明 官网上有2篇文章对THP 做了说明: https://access.redhat.com/solutions/46111 https://acc ...

  4. CSS学习摘要-布局

    注:全文摘自MDN-介绍CSS布局 CSS页面布局技术允许我们拾取网页中的元素,并且控制它们相对正常布局流.周边元素.父容器或者主视口/窗口的位置.在这个模块中将涉及更多关于页面布局技术的细节: 浮动 ...

  5. python常见释疑(有别于报错)(不定时更新)

    文:铁乐与猫 01.在cmd运行py脚本后,直接回到了提示符,没有任何输出,看起来像是并没有运行一样. 答:你的感觉很可能是对的,但脚本很可能己经正常运行,只是你的代码里面很可能没有给出print提示 ...

  6. MVC中使用EF的技巧集(一)

    一.建好数据库后,向项目中添加数据模型. 1.右键点击“Models” 文件夹,选择“添加”,再选择“添加新项”. 2.在“添加新项”窗口,选择左边的“数据”,然后再在右边选择“ADO.NET 实体数 ...

  7. Joinpoint继承体系-笔记

    Joinpoint继承层次图: 由上图可以知道的所有的接口的实现都在ReflectiveMethodInvocation这个类中.ConstructorInvocation接口只有一个方法,这个方法的 ...

  8. tomcat 开启远程debug

    修改 tomcat  目录下  /bin/catelina.sh #                   execution immediately after startup. Default is ...

  9. Geeks : Kruskal’s Minimum Spanning Tree Algorithm 最小生成树

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  10. jQuery放大镜插件

    (function($) { $.fn.magnifier = function(options){ var options = $.extend({ bigWidth: 400, //大图高度 bi ...