hihoCoder 1078 线段树的区间修改
来源:互联网 发布:mysql and or 同时存在 编辑:程序博客网 时间:2024/05/21 03:16
<pre name="code" class="cpp">#include <iostream>#include <cstdio>#include <cstring>#define N 100005using namespace std;struct node{ int l,r,sum; int sett;}tree[N<<2];int a[N];int ans;void build(int m,int l,int r){ tree[m].l = l; tree[m].r = r; tree[m].sett = -1; if(l == r){ tree[m].sum = a[l]; return; } int mid = (l+r)>>1; build(m<<1,l,mid); build((m<<1)+1,mid+1,r); tree[m].sum = tree[m<<1].sum + tree[(m<<1)+1].sum;}void pushdown(int m){ if(tree[m].l >= tree[m].r) return; if(tree[m].sett != -1){ tree[m<<1].sett = tree[(m<<1)+1].sett = tree[m].sett; tree[m<<1].sum = (tree[m<<1].r-tree[m<<1].l+1)*tree[m].sett; tree[(m<<1)+1].sum = (tree[(m<<1)+1].r-tree[(m<<1)+1].l+1)*tree[m].sett; tree[m].sett = -1; }}void maintain(int m){ tree[m].sum = tree[m<<1].sum + tree[(m<<1)+1].sum;}void update(int m,int l,int r,int val){ if(tree[m].l >= l && tree[m].r <= r){ tree[m].sett = val; tree[m].sum = (tree[m].r-tree[m].l+1)*val; return; } pushdown(m); int mid = (tree[m].l+tree[m].r)>>1; if(l <= mid) update(m<<1,l,r,val); if(mid < r) update((m<<1)+1,l,r,val); maintain(m);}void query(int m,int l,int r){ if(tree[m].l >= l && tree[m].r <= r){ ans += tree[m].sum; return; } pushdown(m); int mid = (tree[m].l+tree[m].r)>>1; if(l <= mid) query(m<<1,l,r); if(mid < r) query(m<<1|1,l,r); maintain(m);}int main(){ int n,m; while(~scanf("%d",&n)){ for(int i = 1; i <= n; i++) scanf("%d",&a[i]); build(1,1,n); scanf("%d",&m); int op,a,b,c; for(int i = 1; i <= m; i++){ scanf("%d",&op); if(op == 0){ ans = 0; scanf("%d%d",&a,&b); query(1,a,b); printf("%d\n",ans); } else{ scanf("%d%d%d",&a,&b,&c); update(1,a,b,c); } } } 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 : 线段树的区间修改
- 欢迎使用CSDN-markdown编辑器
- ASP.NET定时执行任务 (不使用外接程序,.net内部机制实现)
- 【LeetCode】242 Valid Anagram
- spss 数据库配置(mysql)
- new 与malloc 的区别
- hihoCoder 1078 线段树的区间修改
- css3 box-sizing属性
- 深度学习——人工神经网络再掀研究热潮
- 数据结构和算法目录表
- FTP主动模式和被动模式的区别
- map遍历
- 【转】(索引)java sql包下面的类的用法
- 个人前言
- 判断设备是否安装QQ