传送门

题意:转换成斜率然后维护区间的上升序列(从区间第一个数开始的单调上升序列)


区间保存这个区间的最长序列的长度$ls$和最大值$mx$

如何合并两个区间信息?

左区间一定选择,右区间递归寻找第一个大于左区间最大值$v$的位置

具体来看,如果右区间的左最大值$<v$那么左面不可能选递归右面

否则这个区间所选的右面一定选,减去左面的$ls$再递归左面

合并复杂度$O(logn)$,总复杂度$O(nlog^2n)$

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define lc x<<1
#define rc x<<1|1
#define mid ((l+r)>>1)
#define lson x<<1,l,mid
#define rson x<<1|1,mid+1,r
using namespace std;
typedef long long ll;
const int N=1e5+;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,Q,a,b;
struct Node{
int ls;
double mx;
Node():ls(),mx(0.0){}
}t[N<<];
int cal(int x,int l,int r,double v){
if(l==r) return t[x].mx>v;
if(t[lc].mx<=v) return cal(rson,v);
else return t[x].ls-t[lc].ls+cal(lson,v);
}
inline void merge(int x,int l,int r){
t[x].mx=max(t[lc].mx,t[rc].mx);
t[x].ls=t[lc].ls+cal(rson,t[lc].mx);
}
void segCha(int x,int l,int r,int p,double v){
if(l==r) t[x].ls=,t[x].mx=v;
else{
if(p<=mid) segCha(lson,p,v);
if(mid<p) segCha(rson,p,v);
merge(x,l,r);
}
}
int main(){
freopen("in","r",stdin);
n=read();Q=read();
while(Q--){
a=read();b=read();
segCha(,,n,a,(double)b/a);
printf("%d\n",t[].ls);
}
}

最新文章

  1. 浅谈iptables 入站 出站以及NAT实例
  2. 借助GitHub托管你的项目代码
  3. 使用Visual Leak Detector for Visual C++ 捕捉内存泄露
  4. iOS开发之如何跳到系统设置里的各种设置界面
  5. nodejs中stream相关资料
  6. java时间戳
  7. 又是周六了-MySQL特训
  8. C++中回调函数(CallBack)的使用
  9. C++ 编写 CorelDRAW CPG 插件例子(1)—WelcomeScreen
  10. 不同linux系统添加开机启动程序的命令
  11. OpenCL memory object 之 Global memory (2)
  12. JQ图片跟着鼠标走
  13. Linux系统编程初探系列之一:文件编程
  14. 2017java预备作业2
  15. Owin中间件动手玩
  16. Android播放在线音乐文件
  17. 【Android】打开本地的html文件
  18. SEED实验——Environment Variable and Set-UID Program实验描述与实验任务
  19. 【读书笔记】segment routing mpls数据平面-1
  20. 可以落地的DDD到底长什么样?

热门文章

  1. mysql 手册关于修改列字符编码的一个bug
  2. 97、爬虫框架scrapy
  3. 如何让低版本IE浏览器支持HTML5标签并为其设置样式
  4. 从零开始学习前端JAVASCRIPT — 4、JavaScript基础Math和Date对象的介绍
  5. DEDE中 field:rel 是什么意思,起一个什么样的作用效果
  6. Maven的主要特点
  7. Powerdesigner+Execel
  8. Django中的F和Q函数
  9. MySQL的char和varchar针对空格的处理
  10. Java为什么需要保留基本数据类型