UESTC1057 (线段树裸题)
来源:互联网 发布:java 编程思想pdf下载 编辑:程序博客网 时间:2024/06/18 09:45
秋实大哥与花
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前。
所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行,每朵花有一个愉悦值。
秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉悦值都会增加一个相同的值
同时他想知道每次他唱完歌后这一段连续的花朵的愉悦值总和是多少。
Input
第一行有一个整数
第二行包含
第三行包含一个整数
接下来
Output
输出共
Sample input and output
30 0 031 2 11 2 -11 3 1
线段树裸题
代码:
#include <bits/stdc++.h>using namespace std;const int maxn=1e5+6;int n,a[maxn],q;struct node{ int l,r; long long sum,lazy; void update(long long x) { sum+=(long long)((r-l+1)*x); lazy+=x; }}tree[maxn*4];void push_up(int x){ tree[x].sum=tree[x<<1].sum+tree[x<<1|1].sum;}void push_down(int x){ int lazyval=tree[x].lazy; if(lazyval){ tree[x<<1].update(lazyval); tree[x<<1|1].update(lazyval); tree[x].lazy=0; }}void build(int x,int l,int r){ tree[x].l=l,tree[x].r=r; tree[x].sum=tree[x].lazy=0; if(l==r){ tree[x].sum=a[l]; }else{ int mid=(l+r)/2; build(x<<1,l,mid); build(x<<1|1,mid+1,r); push_up(x); }}void update(int x,int l,int r,long long val){ int L=tree[x].l,R=tree[x].r; if(l<=L&&R<=r) tree[x].update(val); else{ push_down(x); int mid=(L+R)/2; if(mid>=l)update(x<<1,l,r,val); if(r>mid)update(x<<1|1,l,r,val); push_up(x); }}long long query(int x,int l,int r){ int L=tree[x].l,R=tree[x].r; if(l<=L&&R<=r) return tree[x].sum; else{ push_down(x); long long ans=0; int mid=(L+R)/2; if(mid>=l)ans+=query(x<<1,l,r); if(r>mid)ans+=query(x<<1|1,l,r); push_up(x); return ans; }}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); build(1,1,n); scanf("%d",&q); for(int i=1;i<=q;i++){ int l,r,val; scanf("%d%d%d",&l,&r,&val); update(1,l,r,val); printf("%lld\n",query(1,l,r)); }}
阅读全文
0 0
- UESTC1057 (线段树裸题)
- poj 3264 (线段树裸题)
- JD2943——线段树、树套树、分块(线段树裸题)
- JD2715 忠诚2——线段树(线段树裸题)
- POJ 1166-敌兵布阵 (线段树裸题)
- UVA 12086 Potentiometers(线段树裸题)
- hdu I Hate It (线段树裸题)
- poj2777-线段树应用(线段覆盖)
- 初识线段树(线段树总结)
- codevs1080线段树练习(线段树)
- HDU 1754 线段树裸题
- HDU 4893 线段树裸题
- 线段树裸题系列
- 线段树(poj2528)
- 线段树(1)
- poj2823(线段树)
- 线段树(1)
- 线段树(2)
- np.zeros用法小结
- ConcurrentHashMap原理分析
- 第十二课记录 HBase的Java编程接口
- jsp利用自定义标签制作精美的分页标签
- Linux+.NetCore+Nginx搭建集群
- UESTC1057 (线段树裸题)
- 51nod 1066
- B6AC使用说明
- scikit-learn实现线性回归之LinearRegression模型
- Android7.0Messager通信分析
- 加载配置文件出错
- 《刻意练习》读书笔记
- JVM内存组成
- POJ 3764 The xor-longest Path Trie树/字典树