秋实大哥与花

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit Status

秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前。

所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行,每朵花有一个愉悦值。

秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉悦值都会增加一个相同的值vv(vv可能为负)。

同时他想知道每次他唱完歌后这一段连续的花朵的愉悦值总和是多少。

Input

第一行有一个整数nn,表示花朵的总数目。

第二行包含nn个整数aiai,表示第ii朵花初始的愉悦值。

第三行包含一个整数mm,表示秋实大哥唱了mm天的歌。

接下来mm行,每行包含三个整数ll rr vv,表示秋实大哥对着[l,r][l,r]这个区间内的花朵歌唱,每朵花的愉悦值增加了vv。

1≤n,m,ai,|v|≤1000001≤n,m,ai,|v|≤100000,1≤l≤r≤n。1≤l≤r≤n。

Output

输出共mm行,第ii行表示秋实大哥完成第ii天的歌唱后,那一段花朵的愉悦值总和。

Sample input and output

Sample Input Sample Output
3
0 0 0
3
1 2 1
1 2 -1
1 3 1
2
0
3

Source

2015 UESTC Training for Data Structures

线段树区间更新的模板题,重写了一下,发现太手生了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;typedef long long ll;
const int N = 100005;
int a[N],n,m;struct node
{int l,r;ll sum,lazy;
}tree[N<<4];void push_up(int rt)
{tree[rt].sum = tree[rt<<1].sum + tree[rt<<1|1].sum;
}
void push_down(int rt,int m)
{if(tree[rt].lazy){tree[rt<<1].lazy += tree[rt].lazy;tree[rt<<1|1].lazy += tree[rt].lazy;tree[rt<<1].sum += tree[rt].lazy * (m-(m>>1));tree[rt<<1|1].sum += tree[rt].lazy * (m>>1);tree[rt].lazy = 0;}
}
void build(int l,int r,int rt)
{tree[rt].l = l;tree[rt].r = r;tree[rt].sum = tree[rt].lazy = 0;if(l == r)tree[rt].sum = a[l];else{int mid = (l+r)>>1;build(l,mid,rt<<1);build(mid+1,r,rt<<1|1);push_up(rt);}
}void update(int val,int l,int r,int rt)
{if(tree[rt].l == l && tree[rt].r == r){tree[rt].lazy += 1ll*val;tree[rt].sum += 1ll*val*(r-l+1);return;}if(tree[rt].l == tree[rt].r)return;push_down(rt,tree[rt].r-tree[rt].l+1);int mid = (tree[rt].l+tree[rt].r)>>1;if(r <= mid)update(val,l,r,rt<<1);else if(l > mid)update(val,l,r,rt<<1|1);else{update(val,l,mid,rt<<1);update(val,mid+1,r,rt<<1|1);}push_up(rt);
}
ll query(int l,int r,int rt)
{if(tree[rt].l == l && tree[rt].r == r)return tree[rt].sum;push_down(rt,tree[rt].r-tree[rt].l+1);int mid = (tree[rt].l+tree[rt].r)>>1;ll ans = 0;if(r <= mid)ans += query(l,r,rt<<1);else if(l > mid)ans += query(l,r,rt<<1|1);else{ans += query(l,mid,rt<<1);ans += query(mid+1,r,rt<<1|1);}//printf("dsjilsdfgsd f\n");return ans;
}
int main()
{scanf("%d",&n);for(int i = 1;i <= n;i++)scanf("%d",&a[i]);build(1,n,1);scanf("%d",&m);while(m--){int l,r,val;scanf("%d%d%d",&l,&r,&val);update(val,l,r,1);//printf("dsjils\n");printf("%lld\n",query(l,r,1));}return 0;
}

CDOJ-1057 秋实大哥与花(线段树区间更新)相关推荐

  1. UESToj 1057 秋实大哥与花 ( 线段树

    秋实大哥与花 Description 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段 ...

  2. 2015 UESTC 数据结构专题A题 秋实大哥与小朋友 线段树 区间更新,单点查询,离散化...

    秋实大哥与小朋友 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Desc ...

  3. UESTC - 1057 秋实大哥与花 线段树

    题意 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉 ...

  4. UESTC - 1057 秋实大哥与花 线段树模板题

    http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...

  5. UESTC-1057 秋实大哥与花(线段树+成段加减+区间求和)

    秋实大哥与花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  6. 秋实大哥与家 线段树+扫描线

    debug 快要绝望–发现operator 里面竟然连return 都没有 -QAQ 标1 处都是不合理的位置 --也就是原有家具(包括边界)向左(向上)移动m-1的范围 题目就转化为求两种情况 面积 ...

  7. (线段树--区间更新lazy)CDOJ1057 秋实大哥与花

    传送门:CDOJ1057 秋实大哥与花 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一 ...

  8. 秋实大哥与花(线段树)

    思路:线段树区间更新查询 #include <cstdio> #include <cstring> #include <algorithm> #include &l ...

  9. UESTC_秋实大哥与花 2015 UESTC Training for Data StructuresProblem B

    B - 秋实大哥与花 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

最新文章

  1. python没有英文基础能学吗-初中毕业没有英语基础能学编程吗?该学C或者Python?...
  2. 【PM模块】PM模块主数据
  3. 插图 引用 同一行两个插图_插图的目的
  4. Wicket模型的干净方法
  5. tablestore列式存储原理_10分钟搞透:技术人必会的MySQL体系结构与存储引擎!
  6. NodeJS管理利器 - pm2常用命令
  7. 信息系统项目管理师论文历年题目2005-2020
  8. 【elastic】ES启动选举主节点 RemoteTransportException CoordinationStateRejected became follower
  9. 的udp的接收端如何看速率_计算机网络 TCP与UDP
  10. 第十三届蓝桥杯省赛模拟赛
  11. 基于Material Studio软件使用第一性原理预测AlAs的晶格参数
  12. 估算项目工作量的方法:定额法
  13. 康托尔、哥德尔、图灵——永恒的金色对角线(rev#2)
  14. 文件误删除怎么恢复?解忧小妙招
  15. Vue.js+Layer表格数据绑定与实现更新
  16. R语言-出图时的中英文字体解决方案
  17. MySQL慢查询 - 查看慢查询日志
  18. 如何高效学习(斯科特·扬 )(含思维导图)
  19. 英国物理学家冷嘲中微子超光速发现
  20. 软件工程大师 Martin Fowler 谈机器学习持续交付

热门文章

  1. powerdesigner中cmd模型中多对多_拼多多,在喧嚣中本分前行
  2. 鼠标掠过显示图片的demo
  3. 408-机组一些小知识点
  4. 学Linux到底学什么?老司机来告诉你!
  5. 关于“ROS2 Topic-Statistics-Tutorial编译出错”的思考2
  6. 信创蓝海 合作共赢:统信UOS代理商推介会(郑州站)成功举行
  7. 据说要改变Web3应用层,X2Earn又是什么?
  8. Python爬虫种类、法律、轮子,轮子们,你们辛苦了
  9. windows黑客编程系列(十一):按键记录
  10. 【CJOJ P1096】最佳老农