hihocoder 1078 : 线段树的区间修改
来源:互联网 发布:淘宝商家从哪里进货 编辑:程序博客网 时间:2024/05/21 01:51
#include <bits/stdc++.h>using namespace std;typedef long long LL;#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1#define pushUp(rt) (sum[rt] = sum[rt<<1]+sum[rt<<1|1])#define pushDown(rt,m) if(lazy[rt]){sum[rt<<1] = (m-(m>>1))*lazy[rt];lazy[rt<<1] = lazy[rt];\ sum[rt<<1|1] = (m>>1)*lazy[rt];lazy[rt<<1|1] = lazy[rt];lazy[rt] = 0;}const int MAXN = 1e5+10;LL sum[MAXN<<2];int lazy[MAXN<<2];void build(int l, int r, int rt){ if(l == r) { scanf("%lld",&sum[rt]); return; } int mid = (l+r) >> 1; build(lson); build(rson); pushUp(rt);}void update(int l, int r, int rt, int L, int R, int val){ if(l >= L && r <= R) { sum[rt] = (r-l+1)*val; lazy[rt] = val; return; } pushDown(rt,r-l+1); int mid = (l+r) >> 1; if(R > mid) update(rson,L,R,val); if(L <= mid) update(lson,L,R,val); pushUp(rt);}LL query(int l, int r, int rt, int L, int R){ if(l >= L && r <= R) return sum[rt]; pushDown(rt,r-l+1); int mid = (l+r) >> 1; LL ret = 0; if(R > mid) ret += query(rson,L,R); if(L <= mid) ret += query(lson,L,R); return ret;}int main(){ int n,q,op,l,r,val; while(scanf("%d",&n) != EOF) { memset(lazy,0,sizeof(lazy)); memset(sum,0,sizeof(sum)); build(1,n,1); scanf("%d",&q); while(q--) { scanf("%d %d %d",&op,&l,&r); if(op == 1) { scanf("%d",&val); update(1,n,1,l,r,val); } else printf("%lld\n",query(1,n,1,l,r)); } } return 0;}
阅读全文
0 0
- hihoCoder 1078 线段树的区间修改
- hihoCoder 1078 : 线段树的区间修改
- hihocoder#1078 线段树的区间修改
- hihoCoder 1078 线段树的区间修改
- hihocoder 1078 : 线段树的区间修改
- hihocoder #1078 : 线段树的区间修改
- hihocoder 1078 线段树的区间修改
- hihoCoder 1078 : 线段树的区间修改
- [HihoCoder]#1078 : 线段树的区间修改
- hihocoder 1078 : 线段树的区间修改
- hihocoder 1078# 线段树的区间修改模版
- hihocoder 1078 线段树的区间修改 java实现
- hihocoder 1078 线段树的区间修改 (线段树 区间更新 模板)
- HihoCoder 1078 线段树区间更新
- hihoCoder 1078 区间查询线段树
- HihoCoder 1078(线段树,区间覆盖 询问区间和)
- #1078 : 线段树的区间修改
- HIHO #1078 : 线段树的区间修改
- 大型互联网高并发解决方案之消息中间件技术-activeMQ详解
- 如何学好C++,从入门到进阶
- MySQL表增删改查
- 跳出工作的死循环
- 集合学习--TreeMap 源码初探
- hihocoder 1078 : 线段树的区间修改
- ANDROID样式的开发:SELECTOR篇
- 进程间通讯:信号量
- 认真分析mmap:是什么 为什么 怎么用
- Swift 集成 NIMSDK 踩坑之路
- 故障处理总结
- yii2 数字以千分位格式显示
- QT5每日一学(五)QT布局管理器
- 存储过程