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 |
|---|---|
3 |
2 |
做线段数的题总会有一些小错误,感觉这一次能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& ...
随机推荐
- php大文件分片上传插件
PHP用超级全局变量数组$_FILES来记录文件上传相关信息的. 1.file_uploads=on/off 是否允许通过http方式上传文件 2.max_execution_time=30 允许脚本 ...
- JS几种数组遍历方式总结
JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代 ...
- python图片转字符画(转)
先上代码: from PIL import Image import argparse #命令行输入参数处理 parser = argparse.ArgumentParser() parser.add ...
- Oracle-手工生成AWR
运行awrrpt脚本 SQL> @?/rdbms/admin/awrrpt Current Instance ~~~~~~~~~~~~~~~~ DB Id DB Name ...
- Java连接Oracle数据库常用方法
JDBC的六大步骤: 注册驱动 获取连接 获取执行sql语句对象 执行sql语句 处理结果集 关闭资源 oracle URL: jdbc:oracle:thin:@localhost:1521:SID ...
- [LeetCode]-algorithms-Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- yii2.0 curd操作数据写法
一.执行原生sql查询,创建yii\db\Command insert(),update(),delete()直接构建,相应的sql语句 查: 1.查询一条 \Yii::$app-&g ...
- legend2---lamp.sh一键安装lamp环境需要爬的坑
legend2---lamp.sh一键安装lamp环境需要爬的坑 一.总结 一句话总结: 1.要记得更改项目权限:chown -R apache:apache /data/www/default/网站 ...
- uncaught syntaxerror unexpected token U JSON
uncaught syntaxerror unexpected token U JSON The parameter for the JSON.parse may be returning nothi ...
- 在aspx页面的checkbox取值验证
在做项目的时候遇到了一个选择性的问题,之前都可以用$("#id").checked,但是不知道为什么现在不可以了,只能if($(this).is(":checked&qu ...