原文链接http://www.cnblogs.com/zhouzhendong/p/8672434.html

题目传送门 - BZOJ4553

题目传送门 - 洛谷P4093

题解

  设$Li$表示第$i$个位置最小值,$Ri$表示最大值$vi$表示原值。

  那么如果$i$能到$j$这个位置,则满足:

  $i<j$

  $rj\leq xi$

  $xi\leq li$

  于是CDQ分治水过。

代码

#include <bits/stdc++.h>
using namespace std;
const int N=100005;
struct Node{
int id,v,L,R,res,x,y;
void get(){
scanf("%d",&v),L=R=v,res=1;
}
}a[N];
bool cmp(Node a,Node b){
if (a.x!=b.x)
return a.x<b.x;
if (a.y!=b.y)
return a.y<b.y;
return a.id<b.id;
}
bool cmpid(Node a,Node b){
return a.id<b.id;
}
int n,m,tree[N];
int lowbit(int x){
return x&-x;
}
void add(int x,int y){
for (;x<=100000;x+=lowbit(x))
tree[x]=max(tree[x],y);
}
void clr(int x){
for (;x<=100000;x+=lowbit(x))
tree[x]=0;
}
int sum(int x){
int ans=0;
for (;x>0;x-=lowbit(x))
ans=max(ans,tree[x]);
return ans;
} void CDQ(int L,int R){
if (L==R)
return;
int mid=(L+R)>>1;
CDQ(L,mid);
for (int i=L;i<=mid;i++)
a[i].x=a[i].R,a[i].y=a[i].v;
for (int i=mid+1;i<=R;i++)
a[i].x=a[i].v,a[i].y=a[i].L;
sort(a+L,a+R+1,cmp);
for (int i=L;i<=R;i++)
if (a[i].id<=mid)
add(a[i].y,a[i].res);
else
a[i].res=max(a[i].res,sum(a[i].y)+1);
for (int i=L;i<=R;i++)
if (a[i].id<=mid)
clr(a[i].y);
sort(a+L,a+R+1,cmpid);
CDQ(mid+1,R);
}
int main(){
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
a[i].get(),a[i].id=i;
for (int i=1,x,y;i<=m;i++){
scanf("%d%d",&x,&y);
a[x].L=min(a[x].L,y);
a[x].R=max(a[x].R,y);
}
memset(tree,0,sizeof tree);
CDQ(1,n);
int ans=0;
for (int i=1;i<=n;i++)
ans=max(ans,a[i].res);
printf("%d",ans);
return 0;
}

  

BZOJ4553/洛谷P4093 [HEOI2016/TJOI2016]序列 动态规划 分治的更多相关文章

  1. 洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP

    洛谷 P4093 [HEOI2016/TJOI2016]序列 CDQ分治优化DP 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他. 玩具上有一个数列,数列中某些项的值可能会 ...

  2. 洛谷 P4093 [HEOI2016/TJOI2016]序列 解题报告

    P4093 [HEOI2016/TJOI2016]序列 题目描述 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能会变化,但同一个时刻最多只有一 ...

  3. 洛谷P4093 [HEOI2016/TJOI2016]序列

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

  4. 洛谷 P4093 [HEOI2016/TJOI2016]序列(Cdq+dp)

    题面 luogu 题解 \(Cdq分治+dp\) \(mx[i],mn[i]\)分别表示第\(i\)位最大,最小能取到多少 那么有 \(j < i\) \(mx[j] \le a[i]\) \( ...

  5. 洛谷 P2824 [HEOI2016/TJOI2016]排序 解题报告

    P2824 [HEOI2016/TJOI2016]排序 题意: 有一个长度为\(n\)的1-n的排列\(m\)次操作 \((0,l,r)\)表示序列从\(l\)到\(r\)降序 \((1,l,r)\) ...

  6. 洛谷 P4091 [HEOI2016/TJOI2016]求和 解题报告

    P4091 [HEOI2016/TJOI2016]求和 题目描述 在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心. 现在他想计算这样一个函数的值: \[ f(n)=\sum_{i=0}^n\ ...

  7. 【洛谷P4093】 [HEOI2016/TJOI2016]序列 CDQ分治+动态规划

    你发现只会改变一个位置,所以可以直接进行dp 具体转移的话用 CDQ 分治转移就好了~ #include <bits/stdc++.h> #define N 100006 #define ...

  8. Luogu P4093 [HEOI2016/TJOI2016]序列 dp套CDQ

    题面 好久没写博客了..最近新学了CDQ...于是就来发一发一道CDQ的练习题 看上去就是可以dp的样子. 设\(dp_{i}\)为以i结尾的最长不下降序列. 易得:\(dp_{i}\)=\(max( ...

  9. 洛谷P2824 [HEOI2016/TJOI2016]排序(线段树)

    传送门 这题的思路好清奇 因为只有一次查询,我们考虑二分这个值为多少 将原序列转化为一个$01$序列,如果原序列上的值大于$mid$则为$1$否则为$0$ 那么排序就可以用线段树优化,设该区间内$1$ ...

随机推荐

  1. mysql5.7 闪回数据(update delete insert)

    本次测试用Myflash闪回dml操作,有个前提条件是log_bin开启并且log模式是row: mysql> show global variables like "binlog%& ...

  2. Android App增量升级

    移动互联网主打的就是用户体验和产品的快速迭代,通过用户反馈和用户行为跟踪及时调整产品方向,这样才能持续保持生命力和创造力.说的接地气点就是,你频繁的升级更新,有时只是修复了几个bug或者微调了下界面, ...

  3. elasticsearch6.3.1 安装以及配置IK 使用

    https://blog.csdn.net/whb3299065/article/details/80104323

  4. Unix的哲学

    先讲两个很老的小故事. 第一个故事. 有一家日本最大的化妆品公司,收到了用户的投诉.用户抱怨买来的肥皂盒是空的.这家公司为了防止再发生这样的事故,很辛苦地发明了一台X光检查器,能够透视每一个出货的肥皂 ...

  5. 快速理解VirtualBox的四种网络连接方式

    VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...

  6. 为 Confluence 6 配置发送邮件消息

    如何配置 Confluence 向外发送邮件: 进入  > 基本配置(General Configuration) > 邮件服务器(Mail Servers).这里列出了所有当前配置的 S ...

  7. SpringBoot集成前端模版(thymeleaf)

    1.在application.properties配置文件中添加 thymeleaf 的配置信息 spring.datasource.driverClassName=com.mysql.jdbc.Dr ...

  8. django----常用功能

    request.path_info 获取url地址

  9. Nginx详解二十:Nginx深度学习篇之HTTPS的原理和作用、配置及优化

    一.HTTPS原理和作用: 1.为什么需要HTTPS?原因:HTTP不安全1.传输数据被中间人盗用.信息泄露2.数据内容劫持.篡改 2.HTTPS协议的实现对传输内容进行加密以及身份验证 对称加密:加 ...

  10. XMind思维导图使用笔记

    首先新建一个空白的图 以组织结构图(向下)  为例 1.双击组织结构图 创建一个空白的页面 2.随便选择一个风格 这时候出现工作台 现在里面只有一个中心主题 正文部分开始 1.如果想要添加一个子主题 ...