【洛谷P4093】 [HEOI2016/TJOI2016]序列 CDQ分治+动态规划
你发现只会改变一个位置,所以可以直接进行dp
具体转移的话用 CDQ 分治转移就好了~
#include <bits/stdc++.h>
#define N 100006
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n,m;
int C[N],f[N];
int lowbit(int t)
{
return t&(-t);
}
void CL(int x)
{
while(x<N) C[x]=0, x+=lowbit(x);
}
void add(int x,int v)
{
while(x<N) C[x]=max(C[x],v), x+=lowbit(x);
}
int query(int x)
{
int re=0;
while(x) re=max(re,C[x]), x-=lowbit(x);
return re;
}
struct node
{
int val,id,mn,mx;
}a[N];
bool cmp1(node a,node b)
{
return a.id<b.id;
}
bool cmp2(node a,node b)
{
return a.val<b.val;
}
int cmp3(node a,node b)
{
return a.mn<b.mn;
}
void solve(int l,int r)
{
if(l>=r) return;
int mid=(l+r)>>1;
solve(l,mid);
sort(a+l,a+1+mid,cmp2); sort(a+mid+1,a+1+r,cmp3);
for(int i=mid+1,j=l;i<=r;++i)
{
while(a[j].val<=a[i].mn&&j<=mid) add(a[j].mx,f[a[j].id]),++j;
f[a[i].id]=max(f[a[i].id], query(a[i].val)+1);
}
for(int i=l;i<=mid;++i) CL(a[i].mx);
sort(a+mid+1,a+r+1,cmp1), solve(mid+1,r);
}
int main()
{
//setIO("input");
int i,j,re=0;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i) f[i]=1, scanf("%d",&a[i].val),a[i].id=i,a[i].mn=a[i].mx=a[i].val;
for(i=1;i<=m;++i)
{
int x,y;
scanf("%d%d",&x,&y);
a[x].mn=min(a[x].mn, y);
a[x].mx=max(a[x].mx, y);
}
solve(1,n);
for(i=1;i<=n;++i) re=max(re,f[i]);
printf("%d\n",re);
return 0;
}
【洛谷P4093】 [HEOI2016/TJOI2016]序列 CDQ分治+动态规划的更多相关文章
- 洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP
洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他. 玩具上有一个数列,数列中某些项的值可能会 ...
- 洛谷 P4093 [HEOI2016/TJOI2016]序列 解题报告
P4093 [HEOI2016/TJOI2016]序列 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能会变化,但同一个时刻最多只有一 ...
- BZOJ4553/洛谷P4093 [HEOI2016/TJOI2016]序列 动态规划 分治
原文链接http://www.cnblogs.com/zhouzhendong/p/8672434.html 题目传送门 - BZOJ4553 题目传送门 - 洛谷P4093 题解 设$Li$表示第$ ...
- 洛谷 P4093 [HEOI2016/TJOI2016]序列(Cdq+dp)
题面 luogu 题解 \(Cdq分治+dp\) \(mx[i],mn[i]\)分别表示第\(i\)位最大,最小能取到多少 那么有 \(j < i\) \(mx[j] \le a[i]\) \( ...
- 洛谷P4093 [HEOI2016/TJOI2016]序列
题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能会变化,但同一个时刻最多只有一个值发生变化.现在佳媛姐姐已经研究出了所有变化的可能性, ...
- [HEOI2016/TJOI2016]序列 CDQ分治
---题面--- 题解: 首先我们观察一下,如果一个点对(j, i), 要符合题中要求要满足哪些条件? 首先我们设 j < i 那么有: j < i max[j] < v[i] v[ ...
- 洛谷 P2824 [HEOI2016/TJOI2016]排序 解题报告
P2824 [HEOI2016/TJOI2016]排序 题意: 有一个长度为\(n\)的1-n的排列\(m\)次操作 \((0,l,r)\)表示序列从\(l\)到\(r\)降序 \((1,l,r)\) ...
- 洛谷 P4091 [HEOI2016/TJOI2016]求和 解题报告
P4091 [HEOI2016/TJOI2016]求和 题目描述 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: \[ f(n)=\sum_{i=0}^n\ ...
- LOJ 2353 & 洛谷 P4027 [NOI2007]货币兑换(CDQ 分治维护斜率优化)
题目传送门 纪念一下第一道(?)自己 yy 出来的 NOI 题. 考虑 dp,\(dp[i]\) 表示到第 \(i\) 天最多有多少钱. 那么有 \(dp[i]=\max\{\max\limits_{ ...
随机推荐
- Ubuntu中shell脚本无法使用source命令的原因与解决方法
本文简要描述了在ubuntu系统下无法使用source命令的原因,及对应的两种解决方法,并在附录中引用一篇文章来详细解释source命令的用法 问题: 由于在交叉编译时,需要在当前shell内执行so ...
- linux 文件夹分享
1.在 linux 安装 samba,安装好之后 配置文件在 /etc/samba/smb.conf 目录下. yum install samba samba-client(yum install s ...
- Redis 集群:CLUSTERDOWN The cluster is down
1.错误 (error)CLUSTERDOWN The cluster is down 2.问题表现 Java项目使用redis集群时报错, HTTP Status 500 - Could not g ...
- java jar启动
linux中启动 java -jar 后台运行程序 直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉.以下方法可让jar运行后一直在后台运行. 1. java -ja ...
- 百度地图 libBaiduMapSDK_base_v4_2_1.so" is 32-bit instead of 64-bit错误
20191111 集成android sdk,华为手机基本都启动报错,如下: W/System.err: java.security.NoSuchProviderException: no such ...
- 图解HTTP(二)
第四章 返回结果的HTTP状体码 1.状态码告知从服务器返回的结果 类别 原因短语 1XX Infomational信息性状态码 接收的请求正在处理中 2XX Success成功状态码 请求正常处 ...
- Typora-yes:typora最舒适的使用-优化主题+图床服务+自动上传图片插件
转载注明出处:https://www.cnblogs.com/nreg/p/11992678.html,谢谢 开源项目下载:https://github.com/nreg/typora-yes 云盘: ...
- electron-vue多显示屏下将新窗口投放是其他屏幕
display对象可以获取所有显示屏此处演示程序启动是投放新窗口至另一屏幕 import { app, BrowserWindow } from 'electron' const electron = ...
- 如何解决div背景色半透明,里面的图片不透明问题
用rgba可以实现,不能用opacity 背景做成透明的背景图,opacity属性影响子集的,除非把两者独立开~
- java web添加spring jar 包
maven依赖: <properties> <spring.version>5.1.7.RELEASE</spring.version> </properti ...