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));
}
}
}

hdu6521 吉司机线段树的更多相关文章

  1. HDU - 5306 Gorgeous Sequence (吉司机线段树)

    题目链接 吉司机线段树裸题... #include<bits/stdc++.h> using namespace std; typedef long long ll; ,inf=0x3f3 ...

  2. UVALive - 4108 SKYLINE (吉司机线段树)

    题目链接 题意:在一条直线上依次建造n座建筑物,每座建筑物建造完成后询问它在多长的部分是最高的. 比较好想的方法是用线段树分别维护每个区间的最小值mi和最大值mx,当建造一座高度为x的建筑物时,若mi ...

  3. BZOJ4355: Play with sequence(吉司机线段树)

    题意 题目链接 Sol 传说中的吉司机线段树??感觉和BZOJ冒险那题差不多,就是强行剪枝... 这题最坑的地方在于对于操作1,$C >= 0$, 操作2中需要对0取max,$a[i] > ...

  4. bzoj4355 Play with sequence(吉司机线段树)题解

    题意: 已知\(n\)个数字,进行以下操作: \(1.\)区间\([L,R]\) 赋值为\(x\) \(2.\)区间\([L,R]\) 赋值为\(max(a[i] + x, 0)\) \(3.\)区间 ...

  5. bzoj5312 冒险(吉司机线段树)题解

    题意: 已知\(n\)个数字,进行以下操作: \(1.\)区间\([L,R]\) 按位与\(x\) \(2.\)区间\([L,R]\) 按位或\(x\) \(3.\)区间\([L,R]\) 询问最大值 ...

  6. bzoj4695 最假女选手(势能线段树/吉司机线段树)题解

    题意: 已知\(n\)个数字,进行以下操作: \(1.\)给一个区间\([L,R]\) 加上一个数\(x\) \(2.\)把一个区间\([L,R]\) 里小于\(x\) 的数变成\(x\) \(3.\ ...

  7. HDU - 6315 吉司机线段树

    题意:给出a,b数组,区间上两种操作,给\(a[L,R]\)+1s,或者求\(\sum_{i=l}^{r}a_i/b_i\) 一看就知道是吉司机乱搞型线段树(低配版),暴力剪枝就好 维护区间a的最大值 ...

  8. HDU 5306 吉司机线段树

    思路: 后面nlogn的部分是伪证... 大家可以构造数据证明是这是nlog^2n的啊~ 吉老司机翻车了 //By SiriusRen #include <cstdio> #include ...

  9. Petrozavodsk Winter-2018. AtCoder Contest. Problem I. ADD, DIV, MAX 吉司机线段树

    题意:给你一个序列,需要支持以下操作:1:区间内的所有数加上某个值.2:区间内的所有数除以某个数(向下取整).3:询问某个区间内的最大值. 思路(从未见过的套路):维护区间最大值和区间最小值,执行2操 ...

随机推荐

  1. Docker Compose安装Registry后配置WebUI与客户端

    场景 Docker 私服Registry简介与使用Docker-Compose安装Registry: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  2. Electron npm install 常见错误(Linux)

    Linux版本 Ubuntu 12.04 (32bit) 安装Git sudo apt-get install git 生成ssh key #查看有没有sshkey cd ~/.ssh #生成 ssh ...

  3. PHP Loser 说说做前端需要如何进一步学习

    PHP Loser 说说做前端需要如何进一步学习 做前端的,需要如何进一步学习?书籍这个事情贵精不在多,我这里推荐两本即可: <javascript教程 高级程序设计> <CSS权威 ...

  4. Windows自动执行应用程序或脚本(可以通过写bat文件定时关机等)

    1. Windows每天定时执行某个应用程序 1.1 右键我的电脑选择管理,并选择任务计划程序,如下 演示 --- 1.2 创建基本任务 演示 1.3 Windows每天定时关机设置参数 演示 1. ...

  5. element form 对单个字段做验证

    this.$refs[formName].validateField('phone', phoneError => { //验证手机号码是否正确 if (!phoneError) { conso ...

  6. 调试seanbell/intrinsic遇到的坑

    那些遗忘过去的人注定要重蹈覆辙.——乔治•桑塔亚纳  Authorized error 刚开始按作者 GitHub 上的指示,当运行环境配置好,并且 make 之后,因为生成的 decompose.p ...

  7. SpringCloud gateway (史上最全)

    疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -25[ 博客园 总入口 ] 前言 ### 前言 疯狂创客圈(笔者尼恩创建的高并发研习社群)Springcloud 高并发系列文章,将为大家 ...

  8. Python 爬虫从入门到进阶之路(二)

    上一篇文章我们对爬虫有了一个初步认识,本篇文章我们开始学习 Python 爬虫实例. 在 Python 中有很多库可以用来抓取网页,其中内置了 urllib 模块,该模块就能实现我们基本的网页爬取. ...

  9. 【Luogu P3994】高速公路

    Problem Background \(C\) 国拥有一张四通八达的高速公路网树,其中有 \(n\) 个城市,城市之间由一共 \(n-1\) 条高速公路连接.除了首都 \(1\) 号城市,每个城市都 ...

  10. idea搜索不到任何插件

    今天在idea安装插件的时候,突然发现,什么都搜索不到了?? 解决方案: 完活.