http://acm.hdu.edu.cn/showproblem.php?pid=6521

待填

代码

#include<bits/stdc++.h>
#define ls o<<1
#define rs o<<1|1
#define ll long long
using namespace std;
const int MAXN = 5e5+5;
int Mx[MAXN<<2],Mx2[MAXN<<2],Mn[MAXN<<2],ly[MAXN<<2];
ll V[MAXN<<2];
int n,m,l,r;
void push_up(int o){
Mx[o]=max(Mx[ls],Mx[rs]);
Mx2[o]=0;
if(Mx[ls]==Mx[rs]){
Mn[o]=Mn[ls]+Mn[rs];
Mx2[o]=max(Mx2[ls],Mx2[rs]);
}else{
if(Mx[ls]>Mx[rs]){
Mx[o]=Mx[ls];Mn[o]=Mn[ls];V[o]=V[ls];Mx2[o]=Mx2[ls];ly[o]=ly[ls];
}else{
Mx[o]=Mx[rs];Mn[o]=Mn[rs];V[o]=V[rs];Mx2[o]=Mx2[rs];ly[o]=ly[rs];
}
Mx2[o]=max(Mx2[ls],Mx2[rs]);
if(Mx[o]==Mx[ls])Mx2[o]=max(Mx2[o],Mx[rs]);
else Mx2[o]=max(Mx2[o],Mx[ls]);
}
V[o]=V[ls]+V[rs];
}
void ch(int o,int x){
V[o]-=(1ll*Mx[o]-x)*Mn[o];
Mx[o]=ly[o]=x;
}
void push_down(int o){
if(Mx[ls]>ly[o]){ch(ls,ly[o]);ly[ls]=ly[o];}
if(Mx[rs]>ly[o]){ch(rs,ly[o]);ly[rs]=ly[o];}
ly[o]=-1;
} void build(int o,int l,int r){
ly[o]=-1;Mx2[o]=0;
if(l==r){V[o]=Mx[o]=l;Mn[o]=1;return;}
int mid=(l+r)/2;
build(ls,l,mid);
build(rs,mid+1,r);
push_up(o);
} void ud(int o,int l,int r,int L,int R,int x){
if(~ly[o])push_down(o);
int mid=(l+r)/2;
if(L<=l&&r<=R){
if(x>=Mx[o])return;
else if(x>Mx2[o]){ch(o,x);return;}
else{
ud(ls,l,mid,L,R,x);ud(rs,mid+1,r,L,R,x);
//return; //没有return;
}
}
if(L<=mid)ud(ls,l,mid,L,R,x);
if(R>mid)ud(rs,mid+1,r,L,R,x);
push_up(o);
}
ll qSum(int o,int l,int r,int L,int R){
if(~ly[o])push_down(o);
if(L<=l&&r<=R)return V[o];
int mid=(l+r)/2;
ll ans=0;
if(L<=mid)ans+=qSum(ls,l,mid,L,R);
if(R>mid)ans+=qSum(rs,mid+1,r,L,R);
push_up(o);
return ans;
}
int main(){
while(~scanf("%d%d",&n,&m)){
build(1,1,n);
while(m--){
scanf("%d%d",&l,&r);
ll tp=qSum(1,1,n,l,r);
ud(1,1,n,l,r,l);
printf("%lld\n",tp-qSum(1,1,n,l,r));
}
}
}

最新文章

  1. MySQL:动态开启慢查询日志(Slow Query Log)
  2. python and django
  3. MKMapView的使用
  4. JS open App(未安装就跳转下载页面)
  5. 《UNIX环境高级编程》学习心得 三
  6. [ES6] 16. Object Enhancements
  7. 在js中使用json
  8. C++运算符重载为成员函数
  9. 【转】获取/设置IFRAME内对象元素的几种JS方法
  10. Java中断机制(interrupt)
  11. Material使用03 MdCardModule模块、MdInputModule模块
  12. 【BZOJ3884】上帝与集合的正确用法(欧拉定理,数论)
  13. hive笔记
  14. 配置MapReduce时遇到的问题记录
  15. nginx防止DDOS攻击配置
  16. jquery简介未完成
  17. JAVA_Stream_练习
  18. 用百度AI的OCR文字识别结合JAVA实现了图片的文字识别功能
  19. ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库
  20. 微信小程序跳到h5,h5在跳回小程序

热门文章

  1. python面向对象-1
  2. jsf中的按钮加弹框的两种形式
  3. 设置UICollectionViewCell圆角和阴影
  4. LinuxPXE+Kickstrart无人值守安装服务
  5. C# Winform更换Webbrowse为WebKit
  6. qq cookie
  7. Attention 和self-attention
  8. 关于操作服务器上tomcat的常用linux指令
  9. [译]Vulkan教程(11)Image Views
  10. Feign Ribbon Hystrix 三者关系 | 史上最全, 深度解析