JZOJ 1960 最大值2
2018-03-03 00:03
295 查看
其实和最大值差不多
就是需要用懒标记
就是需要用懒标记
虽然不配图,但是有代码。
#pragma GCC optimize(2) #include <cstdio> #include <cctype> #include <climits> #include <algorithm> using namespace std; struct node{long long w,lazy;}tree[400001]; int a[100001],n,m; long long ans; inline int in(){ int ans=0,f=1; char c=getchar(); while (!isdigit(c)&&c!='-') c=getchar(); if (c=='-') c=getchar(),f=-f; while (isdigit(c)) ans=ans*10+c-48,c=getchar(); return ans*f; } int build(int l,int r,int k){ if (l==r) return tree[k].w=a[r]; return tree[k].w=max(build(l,(l+r)>>1,k<<1),build(((l+r)>>1)+1,r,(k<<1)+1)); } inline void in1(int &x,int &y){x=in(); y=in();} void update(int l,int r,int x,int y,int res,int k){ if (x==l&&y==r) {tree[k].w+=res; tree[k].lazy+=res; return;}//传输懒标记 if (tree[k].lazy){//存在懒标记就往下传 tree[k<<1].w+=tree[k].lazy; tree[k<<1].lazy+=tree[k].lazy; tree[(k<<1)+1].w+=tree[k].lazy; tree[(k<<1)+1].lazy+=tree[k].lazy; tree[k].lazy=0; } int mid=(l+r)>>1; if (y<=mid) update(l,mid,x,y,res,k<<1);//左边 else if (x>mid) update(mid+1,r,x,y,res,(k<<1)+1);//右边 else update(l,mid,x,mid,res,k<<1),update(mid+1,r,mid+1,y,res,(k<<1)+1);//右边 tree[k].w=max(tree[k<<1].w,tree[(k<<1)+1].w); } void find(int l,int r,int x,int y,int k){ if (x==l&&y==r) {ans=max(ans,tree[k].w); return;} if (tree[k].lazy){//懒标记 tree[k<<1].w+=tree[k].lazy; tree[k<<1].lazy+=tree[k].lazy; tree[(k<<1)+1].w+=tree[k].lazy; tree[(k<<1)+1].lazy+=tree[k].lazy; tree[k].lazy=0; } int mid=(l+r)>>1; if (y<=mid) find(l,mid,x,y,k<<1);//左边 else if (x>mid) find(mid+1,r,x,y,(k<<1)+1);//右边 else find(l,mid,x,mid,k<<1),find(mid+1,r,mid+1,y,(k<<1)+1);//右边 } int main(){ n=in(); for (int i=1;i<=n;i++) a[i]=in(); build(1,n,1); m=in(); while (m--){ int q=in(),x,y,k; ans=INT_MIN; in1(x,y); if (q==1) k=in(),update(1,n,x,y,k,1); else find(1,n,x,y,1),printf("%lld\n",ans); } return 0; }
相关文章推荐
- min_25 JZOJ5594 最大真因数
- [二分][dfs]JZOJ 2748 最大立方体空间 80%做法
- (CSU - 1960)单源最大权路径
- jzoj 1154_购物_最大流/树形dp
- 最大配对 jzoj 1280
- 【JZOJ2224】【NOI2006】最大获利
- jzoj4887 最大匹配
- JZOJ4887. 【NOIP2016提高A组集训第13场11.11】最大匹配
- JZOJ__DAY 4:【普及模拟】最大值
- JZOJ 1959 最大值
- [jzoj]3457. 【NOIP2013模拟联考3】沙耶的玩偶(doll)(匈牙利-二分图最大匹配)
- 【JZOJ 4887】最大匹配
- 最大流 - JZOJ 4087 网络吞吐量 CQOI 2015
- jzoj3614 【NOI2014模拟】加工安排 (贪心 或 最大流)
- COJ1960-单源最大权路径
- jzoj_1379 最大值
- JZOJ 1349. 最大公约数 (Standard IO)
- jzoj 1379_【线段树】最大值_线段树
- CSU 1960:单源最大权路径 (DFS)
- JZOJ4828. 【GDOI2017模拟10.30】最大值 分类讨论+分治处理子集问题