4553: [Tjoi2016&Heoi2016]序列

链接

分析:

  注意所有m此操作中,只会发生一个,于是考虑dp。dp[i]=dp[j]+1,j<i,a[j]<=L[i],R[j]<=a[i]。L[i]为位置i处,所有可能发生的改变中的最小值,R[i]为最大值。

  这是三维偏序问题,于是CDQ+树状数组。

代码:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<cctype>
#include<set>
#include<queue>
#include<vector>
#include<map>
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int N = ;
int dp[N];
struct Node { int id, x, l, r; } A[N], B[N];
bool cmp1(Node A, Node B) { return A.l < B.l; }
bool cmp2(Node A, Node B) { return A.x < B.x; }
bool cmp3(Node A, Node B) { return A.id < B.id; } struct Bit{
int mx[N], n;
void update(int p,int v) {
for (; p <= n; p += (p & (-p))) mx[p] = max(mx[p], v);
}
int query(int p) {
int ans = ;
for (; p; p -= (p & (-p))) ans = max(ans, mx[p]);
return ans;
}
void clear(int p) {
for (; mx[p] && p <= n; p += (p & (-p))) mx[p] = ;
}
}bit;
void cdq(int l,int r) {
if (l >= r) return ;
int mid = (l + r) >> ;
cdq(l, mid);
sort(A + mid + , A + r + , cmp1);
int i = l, j = mid + ;
while (i <= mid && j <= r) {
if (A[i].x <= A[j].l) {
bit.update(A[i].r, dp[A[i].id]); i ++;
}
else {
dp[A[j].id] = max(dp[A[j].id], bit.query(A[j].x) + ); j ++;
}
}
while (j <= r) {
dp[A[j].id] = max(dp[A[j].id], bit.query(A[j].x) + ); j ++;
}
for (int k = l; k < i; ++k) bit.clear(A[k].r);
sort(A + mid + , A + r + , cmp3);
cdq(mid + , r);
sort(A + l, A + r + , cmp2);
}
int main() {
int n = read(), m = read(); bit.n = n;
for (int i = ; i <= n; ++i) A[i].id = i, A[i].x = A[i].l = A[i].r = read();
for (int i = ; i <= m; ++i) {
int x = read(), y = read();
A[x].l = min(A[x].l, y), A[x].r = max(A[x].r, y);
}
for (int i = ; i <= n; ++i) dp[i] = ;
cdq(, n);
int ans = ;
for (int i = ; i <= n; ++i) ans = max(ans, dp[i]);
cout << ans;
return ;
}

最新文章

  1. centos apache svn配置
  2. jquery复习笔记
  3. [并查集] POJ 1611 The Suspects
  4. Wormholes(Bellman-ford)
  5. .net 日期格式化
  6. 基于Jquery+Ajax+Json+高效分页
  7. 怎么用程序获取远程url执行后的图片地址
  8. MongoDB笔记(三)启动命令mongod的参数
  9. 三星 PMU NXE2000,x-powers的AXP228,NXE2000
  10. wamp5.2 升级到wamp5.3 (转载)
  11. Matlab学习第二天 利用插值
  12. WCF常见问题(1) -- WebService/WCF Session Cookie
  13. diff命令参数
  14. 英语词典Alpha版本发布说明
  15. 通过编程为Outlook 2007添加邮件规则
  16. 03_Nginx添加新模块
  17. 51单片机数据类型int,float,指针所占字节数
  18. 【译】Building ArduPilot on Windows with waf and Bash
  19. java网络编程Socket通信详解
  20. 为JavaScript正名--读你不知道的JavaScript(持续更新..)

热门文章

  1. 转:ClickOnce部署Winform程序的方方面面
  2. 铁乐学Python_day11_闭包函数
  3. 第八章 计时器(DIGCLOCK)
  4. September 13th 2017 Week 37th Wednesday
  5. #002 WebStrom Live Templete 使用说明
  6. Java补充内容
  7. 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧
  8. Service Mesh服务网格之Linkerd架构
  9. 工作中碰到的一个问题(cookie相关)
  10. 原生JS和jQuery分别使用jsonp来获取“当前天气信息”