HDU - 5306 Gorgeous Sequence (吉司机线段树)
吉司机线段树裸题...
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e6+,inf=0x3f3f3f3f3f3f3f3f;
ll n,m,a[N],mx[N<<],se[N<<],nmx[N<<],lz[N<<];
ll sum[N<<];
#define ls (u<<1)
#define rs (u<<1|1)
#define mid ((l+r)>>1)
void pu(ll u) {
sum[u]=sum[ls]+sum[rs];
mx[u]=max(mx[ls],mx[rs]),se[u]=min(mx[ls],mx[rs]);
se[u]=se[u]==mx[u]?max(se[ls],se[rs]):max(se[u],max(se[ls],se[rs]));
nmx[u]=(mx[ls]==mx[u]?nmx[ls]:)+(mx[rs]==mx[u]?nmx[rs]:);
}
void change(ll u,ll x) {sum[u]-=(mx[u]-x)*nmx[u],mx[u]=lz[u]=x;}
void pd(ll u) {
if(~lz[u]) {
if(mx[ls]>lz[u])change(ls,lz[u]);
if(mx[rs]>lz[u])change(rs,lz[u]);
lz[u]=-;
}
}
void upd(ll L,ll R,ll x,ll u=,ll l=,ll r=n) {
if(l>R||r<L||mx[u]<=x)return;
if(l>=L&&r<=R&&se[u]<x) {change(u,x); return;}
pd(u),upd(L,R,x,ls,l,mid),upd(L,R,x,rs,mid+,r),pu(u);
}
ll qrymx(ll L,ll R,ll u=,ll l=,ll r=n) {
if(l>R||r<L)return ~inf;
if(l>=L&&r<=R)return mx[u];
pd(u);
return max(qrymx(L,R,ls,l,mid),qrymx(L,R,rs,mid+,r));
}
ll qrysum(ll L,ll R,ll u=,ll l=,ll r=n) {
if(l>R||r<L)return ;
if(l>=L&&r<=R)return sum[u];
pd(u);
return qrysum(L,R,ls,l,mid)+qrysum(L,R,rs,mid+,r);
}
void build(ll u=,ll l=,ll r=n) {
lz[u]=-;
if(l==r) {sum[u]=mx[u]=a[l],se[u]=~inf,nmx[u]=; return;}
build(ls,l,mid),build(rs,mid+,r),pu(u);
}
int main() {
ll T;
for(scanf("%lld",&T); T--;) {
scanf("%lld%lld",&n,&m);
for(ll i=; i<=n; ++i)scanf("%lld",&a[i]);
build();
while(m--) {
ll f,l,r,x;
scanf("%lld%lld%lld",&f,&l,&r);
if(f==)scanf("%lld",&x),upd(l,r,x);
else if(f==)printf("%lld\n",qrymx(l,r));
else if(f==)printf("%lld\n",qrysum(l,r));
}
}
return ;
}
HDU - 5306 Gorgeous Sequence (吉司机线段树)的更多相关文章
- BZOJ4355: Play with sequence(吉司机线段树)
题意 题目链接 Sol 传说中的吉司机线段树??感觉和BZOJ冒险那题差不多,就是强行剪枝... 这题最坑的地方在于对于操作1,$C >= 0$, 操作2中需要对0取max,$a[i] > ...
- bzoj4355 Play with sequence(吉司机线段树)题解
题意: 已知\(n\)个数字,进行以下操作: \(1.\)区间\([L,R]\) 赋值为\(x\) \(2.\)区间\([L,R]\) 赋值为\(max(a[i] + x, 0)\) \(3.\)区间 ...
- UVALive - 4108 SKYLINE (吉司机线段树)
题目链接 题意:在一条直线上依次建造n座建筑物,每座建筑物建造完成后询问它在多长的部分是最高的. 比较好想的方法是用线段树分别维护每个区间的最小值mi和最大值mx,当建造一座高度为x的建筑物时,若mi ...
- bzoj5312 冒险(吉司机线段树)题解
题意: 已知\(n\)个数字,进行以下操作: \(1.\)区间\([L,R]\) 按位与\(x\) \(2.\)区间\([L,R]\) 按位或\(x\) \(3.\)区间\([L,R]\) 询问最大值 ...
- bzoj4695 最假女选手(势能线段树/吉司机线段树)题解
题意: 已知\(n\)个数字,进行以下操作: \(1.\)给一个区间\([L,R]\) 加上一个数\(x\) \(2.\)把一个区间\([L,R]\) 里小于\(x\) 的数变成\(x\) \(3.\ ...
- HDU 5306 Gorgeous Sequence[线段树区间最值操作]
Gorgeous Sequence Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- HDU - 6315 吉司机线段树
题意:给出a,b数组,区间上两种操作,给\(a[L,R]\)+1s,或者求\(\sum_{i=l}^{r}a_i/b_i\) 一看就知道是吉司机乱搞型线段树(低配版),暴力剪枝就好 维护区间a的最大值 ...
- 2015 Multi-University Training Contest 2 hdu 5306 Gorgeous Sequence
Gorgeous Sequence Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- [HDU] 5306 Gorgeous Sequence [区间取min&求和&求max]
题解: 线段树维护区间取min求和求max 维护最小值以及个数,次小值 标记清除时,分情况讨论 当lazy>max1 退出 当max1>lazy>max2(注意不要有等号) 更新 否 ...
随机推荐
- apache——(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : AH00072: make_sock: could not bind to address [::]:443
问题:命令行运行httpd.exe时报错 (OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次. : AH00072: make_sock: could not bind t ...
- 2017 ACM/ICPC Asia Regional Qingdao Online - 1008 Chinese Zodiac
2017-09-17 13:28:04 writer:pprp 签到题:1008 Chinese Zodiac #include <iostream> #include <strin ...
- swagger2 坑 记录
swagger2 只认 @RequestMapping 注解! 不认@RestController 注解 @RestController @RequestMapping(value = "/ ...
- php入门(三)
PHP 面向对象: 在php5中 var就是public的别名. 变量 $this 代表自身的对象. PHP_EOL;为换行符 构造函数+析构函数 <?php class Site { /* 成 ...
- java高级特性(3)--方法可变参数
1.特征:... 2.方法可变参数,必须是方法参数列表的最后一位. 3.一个方法只能有一个方法可变参数. 4.方法可变参数本质是一个数组. 5.调用时按照方法可变参数赋值,多余的实参被封装成一个数组, ...
- 【三小时学会Kubernetes!(四) 】Deployment实践
Deployment 部署 Kubernetes 部署可以帮助每一个应用程序的生命都保持相同的一点:那就是变化.此外,只有挂掉的应用程序才会一尘不变,否则,新的需求会源源不断地涌现,更多代码会被开发出 ...
- SQL Server 的索引结构实例
目前SQL Server 的索引结构如下: 这个是聚集索引的存放形式: 非聚集索引的方式如下: 它们是以B+树的数据结构存放的. 相信大家都看过类似的图,但是没有直观的认识,下面举一个实际的例子来说明 ...
- [Vue]组件——插槽:slot(匿名插槽,具名插槽)与slot-scope(作用域插槽)
1.单个插槽 | 匿名插槽 1.1<navigation-link> 子组件定义为: <a v-bind:href="url" class="nav-l ...
- Web 安全测试,盗版小坦克
Web安全测试之XSS XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此 ...
- Bootstrap 与 IE 兼容模式 关系讲解
IE 兼容模式 Bootstrap 不支持 IE 古老的兼容模式.为了让 IE 浏览器运行最新的渲染模式下,建议将此 <meta> 标签加入到你的页面中:Copy <meta htt ...