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