UESTC-1057 秋实大哥与花(线段树+成段加减+区间求和)
秋实大哥与花
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前。
所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行,每朵花有一个愉悦值。
秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉悦值都会增加一个相同的值v(v可能为负)。
同时他想知道每次他唱完歌后这一段连续的花朵的愉悦值总和是多少。
Input
第一行有一个整数n,表示花朵的总数目。
第二行包含n个整数ai,表示第i朵花初始的愉悦值。
第三行包含一个整数m,表示秋实大哥唱了m天的歌。
接下来m行,每行包含三个整数l r v,表示秋实大哥对着[l,r][l,r]这个区间内的花朵歌唱,每朵花的愉悦值增加了v。
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 |
---|---|
|
|
做线段数的题总会有一些小错误,感觉这一次能1Y,结果PushDown里又犯了小错误。。。唉。。。可能与1Y无缘吧。。>_<
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- using namespace std;
- #define lson l, m, rt << 1
- #define rson m + 1, r, rt <<1|1
- typedef long long LL;
- const int N = + ;
- LL sum[N << ], col[N << ];
- void PushUP(int rt){
- sum[rt] = sum[rt << ] + sum[rt << |];
- }
- void PushDown(int rt, int m){
- if(col[rt]){
- col[rt << ] += col[rt];
- col[rt << |] += col[rt];
- sum[rt << ] += (LL)col[rt]*(m - (m >> ));
- sum[rt << |] += (LL)col[rt] * (m >> );
- col[rt] = ;
- }
- }
- void Build(int l, int r, int rt){
- if(l == r){
- scanf("%lld", &sum[rt]);
- return;
- }
- int m = (l + r) >> ;
- Build(lson);
- Build(rson);
- PushUP(rt);
- }
- void Updata(int L, int R, int c, int l, int r, int rt){
- if(L <= l && r <= R){
- col[rt] += c;
- sum[rt] += (LL)c*( r - l + );
- return ;
- }
- PushDown(rt, r - l + );
- int m = (l + r) >> ;
- if(L <= m) Updata(L, R, c, lson);
- if(R > m) Updata(L, R, c, rson);
- PushUP(rt);
- }
- LL Query(int L, int R, int l, int r, int rt){
- if(L <= l && r <= R){
- return sum[rt];
- }
- PushDown(rt, r - l + );
- int m = (l + r) >> ;
- LL ret = ;
- if(L <= m) ret += Query(L, R, lson);
- if(R > m) ret += Query(L, R, rson);
- return ret;
- }
- int main(){
- int n, m, l, r, c;
- scanf("%d", &n);
- Build(, n, );
- scanf("%d", &m);
- while(m --){
- scanf("%d %d %d", &l, &r, &c);
- Updata(l, r, c, , n, );
- printf("%lld\n", Query(l, r, , n, ));
- }
- return ;
- }
UESTC-1057 秋实大哥与花(线段树+成段加减+区间求和)的更多相关文章
- UESTC - 1057 秋实大哥与花 线段树
题意 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉 ...
- UESTC - 1057 秋实大哥与花 线段树模板题
http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...
- CDOJ 1057 秋实大哥与花 线段树 区间更新+区间查询
链接: I - 秋实大哥与花 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit ...
- 2015 UESTC 数据结构专题B题 秋实大哥与花 线段树 区间加,区间查询和
B - 秋实大哥与花 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 De ...
- UESTC 1061 秋实大哥与战争 线段树区间合并
秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 男儿何不带吴钩, ...
- 2015 UESTC 数据结构专题E题 秋实大哥与家 线段树扫描线求矩形面积交
E - 秋实大哥与家 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 De ...
- 2015 UESTC 数据结构专题A题 秋实大哥与小朋友 线段树 区间更新,单点查询,离散化
秋实大哥与小朋友 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Desc ...
- poj_3468线段树成段更新求区间和
#include<iostream> #include<string.h> #include<cstdio> long long num[100010]; usin ...
- POJ3468_A Simple Problem with Integers(线段树/成段更新)
解题报告 题意: 略 思路: 线段树成段更新,区间求和. #include <iostream> #include <cstring> #include <cstdio& ...
随机推荐
- python从入门到实践 第二章
python变量赋值: python的变量赋值 可以是单引号 也可以是双引号python 变量赋值的时候不能加()的 比如 name = "My Name is GF"变量赋值的时 ...
- ClustrixDB安装配置
前提条件 在安装ClustrixDB之前,需要: ClustrixDB安装程序和许可证密钥. 运行CentOS或RHEL 7.4的服务器(本地或云中). 具有root或sudo特权来安装Clustri ...
- 如何用 Redis 统计独立用户访问量
众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发,稍微优秀一点的,都给到30K的Offer,当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过1 ...
- eclipse在线安装ermaster插件
eclipse在线安装ermaster插件: https://www.jianshu.com/p/449fbcd9141a ERMaster的安装和使用 https://www.cnblogs.com ...
- OI常用的常数优化小技巧
注意:本文所介绍的优化并不是算法上的优化,那个就非常复杂了,不同题目有不同的优化.笔者要说的只是一些实用的常数优化小技巧,很简单,虽然效果可能不那么明显,但在对时间复杂度要求十分苛刻的时候,这些小的优 ...
- python相关遗漏知识点补充
python中的相关帮助命令 假设s是一个字符串, 那么dir(s)可以列出字符串对象的所有属性(方法也是函数属性),其中有下划线的部分与类重 载有关,用来表示python实现细节,没有下划线的属性是 ...
- 一句话搞定python六剑客
六剑客 一行搞定六剑客:三个函数:map filter reduce + lambda 切片 推导列表 python最有特点的一行代码,所有代码均可以借用一行代码(目标) 1.map(函数,列表或者字 ...
- nginx中lua动态返回文件
原来还可以这么操作,lua动态获取内容然后返回,下面是实例,可以做到先返回一个字符串,然后过5秒再返回另外一个字符串 ngx.say("hello") ngx.flush(true ...
- WINDOWS API 大全(一)
1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同 ...
- org.hibernate.AssertionFailure: null id don't flus
我的是字段编码和数据库不匹配,是爬的微博数据