跟着卿学姐写线段树。。。 ( 秋实大哥与花 UESTC
来源:互联网 发布:淘宝上的洗面乳安全吗 编辑:程序博客网 时间:2024/05/16 10:51
秋实大哥与花
UESTC - 1057秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前。
所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行,每朵花有一个愉悦值。
秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉悦值都会增加一个相同的值
可能为负)。
同时他想知道每次他唱完歌后这一段连续的花朵的愉悦值总和是多少。
第一行有一个整数
,表示花朵的总数目。
第二行包含
朵花初始的愉悦值。
第三行包含一个整数
天的歌。
接下来
。
输出共
天的歌唱后,那一段花朵的愉悦值总和。
30 0 031 2 11 2 -11 3 1
203
#include <iostream>#include <cstdio>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 += 1*(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 lazyvalue=tree[x].lazy; if(lazyvalue) { tree[x<<1].update(lazyvalue); tree[x<<1|1].update(lazyvalue); tree[x].lazy=0; }}void build(int x,int l,int r){ tree[x].l=l,tree[x].r=r; tree[x].lazy=tree[x].sum=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)); } return 0;}
1 0
- 跟着卿学姐写线段树。。。 ( 秋实大哥与花 UESTC
- 秋实大哥与线段树 UESTC
- UESTC -- 1057 秋实大哥与花(线段树)
- UESTC-1073-秋实大哥与线段树
- UESTC-1057 秋实大哥与花
- UESTC 1059 秋实大哥与小朋友(线段树+离散化)
- UESTC 1073 秋实大哥与线段树 线段树&&改值与区间和 or 树状数组
- uestc数据结构训练B - 秋实大哥与花
- UESTC 1060 秋实大哥与快餐店(字典树)
- [UESTC 1060]秋实大哥与快餐店
- [UESTC 1061]秋实大哥与战争
- 秋实大哥与小朋友 UESTC
- UESToj 1057 秋实大哥与花 ( 线段树
- uestc data structure n 秋实大哥与快餐店
- uestc data structure D - 秋实大哥与战争
- UESTC -- 1061 秋实大哥与战争(暴力/set)
- [UESTC 1146]秋实大哥与连锁快餐店
- UESTC-1057 秋实大哥与花 (区间修改,区间求和)
- Training and investigating Residual Nets 自己分析
- 【序列】相加
- android硬件访问服务分析-vibrator
- android 之隐藏一批view
- Echarts前后台交互
- 跟着卿学姐写线段树。。。 ( 秋实大哥与花 UESTC
- Paper Reading
- 为何传统的数据库会黯然失色
- jquery-放大镜通用
- 对Java多态的深入理解
- 慎独,是自律的最高层次
- C++的Stack模板的简单实现
- 安装mysql自动输入密码
- Ubuntu 文件文件夹查看权限和设置权限