博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
suoi46 最大和和 (线段树)
阅读量:5279 次
发布时间:2019-06-14

本文共 2399 字,大约阅读时间需要 7 分钟。

《Segment tree Beats!》,反正我不会

1 #include
2 #define pa pair
3 #define CLR(a,x) memset(a,x,sizeof(a)) 4 using namespace std; 5 typedef long long ll; 6 const int maxn=4e5+10; 7 const ll inf=1e15+1; 8 9 inline ll rd(){ 10 ll x=0;char c=getchar();int neg=1; 11 while(c<'0'||c>'9'){
if(c=='-') neg=-1;c=getchar();} 12 while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar(); 13 return x*neg; 14 } 15 16 ll a[maxn]; 17 int N,M; 18 ll sum[maxn<<2],mn[maxn<<2][2],se[maxn<<2],laz[maxn<<2]; 19 20 inline void update(int p){ 21 sum[p]=sum[p<<1]+sum[p<<1|1]; 22 if(mn[p<<1][0]==mn[p<<1|1][0]){ 23 mn[p][0]=mn[p<<1][0],mn[p][1]=mn[p<<1][1]+mn[p<<1|1][1]; 24 se[p]=min(se[p<<1],se[p<<1|1]); 25 } 26 else if(mn[p<<1][0]
<<1|1][0]){ 27 mn[p][0]=mn[p<<1][0],mn[p][1]=mn[p<<1][1]; 28 se[p]=min(se[p<<1],mn[p<<1|1][0]); 29 } 30 else if(mn[p<<1][0]>mn[p<<1|1][0]){ 31 mn[p][0]=mn[p<<1|1][0],mn[p][1]=mn[p<<1|1][1]; 32 se[p]=min(se[p<<1|1],mn[p<<1][0]); 33 } 34 } 35 36 void pushdown(int p){ 37 if(!laz[p]) return; 38 ll x=laz[p];laz[p]=0; 39 if(x<=mn[p][0]) return; 40 laz[p<<1]=max(x,laz[p<<1]); 41 laz[p<<1|1]=max(x,laz[p<<1|1]); 42 if(x
>1; 60 if(x<=m) change(p<<1,l,m,x,y,z); 61 else pushdown(p<<1); 62 if(y>=m+1) change(p<<1|1,m+1,r,x,y,z); 63 else pushdown(p<<1|1); 64 update(p); 65 } 66 } 67 68 void build(int p,int l,int r){ 69 if(l==r){ 70 mn[p][0]=sum[p]=a[l]; 71 mn[p][1]=1,se[p]=inf; 72 }else{ 73 int m=l+r>>1; 74 build(p<<1,l,m);build(p<<1|1,m+1,r); 75 update(p); 76 } 77 } 78 79 ll query(int p,int l,int r,int x,int y){ 80 pushdown(p); 81 if(x<=l&&r<=y) return sum[p]; 82 int m=l+r>>1;ll re=0; 83 if(x<=m) re=query(p<<1,l,m,x,y); 84 if(y>=m+1) re+=query(p<<1|1,m+1,r,x,y); 85 return re; 86 } 87 88 int main(){ 89 //freopen("","r",stdin); 90 int i; 91 N=rd(),M=rd(); 92 for(i=1;i<=N;i++) 93 a[i]=rd(); 94 build(1,1,N); 95 for(i=1;i<=M;i++){ 96 ll a=rd(),b=rd(),c=rd(); 97 if(!a) printf("%lld\n",query(1,1,N,b,c)); 98 else change(1,1,N,b,c,a); 99 }100 return 0;101 }

 

转载于:https://www.cnblogs.com/Ressed/p/9811200.html

你可能感兴趣的文章
HashMap循环遍历方式
查看>>
React Native 入门 调试项目
查看>>
C# 通过 Quartz .NET 实现 schedule job 的处理
查看>>
关于java之socket输入流输出流可否放在不同的线程里进行处理
查看>>
目前为止用过的最好的Json互转工具类ConvertJson
查看>>
Day13
查看>>
tensorflow saver简介+Demo with linear-model
查看>>
Luogu_4103 [HEOI2014]大工程
查看>>
Oracle——SQL基础
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
P1970 花匠
查看>>
java语言与java技术
查看>>
NOIP2016提高A组五校联考2总结
查看>>
iOS 项目的编译速度提高
查看>>
table中checkbox选择多行
查看>>
Magento开发文档(三):Magento控制器
查看>>
性能调优攻略
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>