原文链接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. [MySQL]group by 与 having 结合函数 的统计技巧

    group by 与 having 允许字段使用函数,根据函数运行的结果group by分组或having设置选择条件; 同时group by 与 having 也允许使用字段别名 示例表a: id ...

  2. Caffeine缓存

    在本文中,我们来看看 Caffeine — 一个高性能的 Java 缓存库. 缓存和 Map 之间的一个根本区别在于缓存可以回收存储的 item. 回收策略为在指定时间删除哪些对象.此策略直接影响缓存 ...

  3. Dnsmasq加速本地DNS请求

    文章目录 Dnsmasq安装 Dnsmasq配置 Dnsmasq启动 Dnsmasq使用 Dnsmasq小结   默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了 ...

  4. Java红黑树详谈

    定义 红黑树的主要是想对2-3查找树进行编码,尤其是对2-3查找树中的3-nodes节点添加额外的信息.红黑树中将节点之间的链接分为两种不同类型,红色链接,他用来链接两个2-nodes节点来表示一个3 ...

  5. 解决Javascript中$(window).resize()多次执行(转)

    https://www.cnblogs.com/shuilangyizu/p/6816756.html 有些时候,我们需要在浏览器窗口发生变化的时候,动态的执行一些操作,比如做自适应页面时的适配.这个 ...

  6. Swift 学习- 07 -- 函数

    // 函数 // 函数是一段完成特定任务的独立代码片段, 你可以通过给函数命名来标识某个函数的功能, 这个名字可以被用来在需要的时候'调用'这个函数来完成它的任务 // swift 统一的函数语法非常 ...

  7. Confluence 6 虚拟文件和文件夹

    在取消点赞事件中,你可能会遇到 WebDAV  客户端的问题或者不稳定的情况,你可以启用访问自动创建(虚拟)文件和文件夹. 备注: 在默认情况下,这个选项隐藏在 'WebDAV Configurati ...

  8. Confluence 6 数据库整合的方法 2:针对有大量附件的运行实例

    设置准备 这个方法仅仅针对附件存储在文件系统中.如果你存储附件在数据库中,请参考 Attachment Storage Configuration 文档中的内容来找到如何在 2 种不同的文件存储方式之 ...

  9. ionic3 Injectable 引入NavController

    在service里 引入 navcontroller 报错 And I get error No provider for NavController. 一个比较容易解决的方法, import {Io ...

  10. 【python】spark+kafka使用

    网上用python写spark+kafka的资料好少啊 自己记录一点踩到的坑~ spark+kafka介绍的官方网址:http://spark.apache.org/docs/latest/strea ...