PKU 3468
来源:互联网 发布:淘宝无线端详情页模板 编辑:程序博客网 时间:2024/05/17 01:04
与上题类似。只是变成了累加。每次更新的时候要更新sum值(加)
多了query的操作。与update类似
#include <iostream>using namespace std;#define lson l, m, rt << 1#define rson m+1, r, rt << 1 | 1#define LL long longconst int maxn = 1111111;LL add[maxn << 2];LL sum[maxn << 2];void pushUp(int rt){sum[rt] = sum[rt<<1] + sum[rt << 1 | 1];}void pushDown(int rt, int num){if(add[rt]){add[rt<<1] += add[rt];add[rt<<1|1] += add[rt];sum[rt<<1] += add[rt] * (num -(num>>1));sum[rt<<1 | 1] += add[rt] *(num >> 1);add[rt] = 0;}}void build(int l, int r, int rt){add[rt] = 0;sum[rt] = 1;if(l == r){scanf("%lld", &sum[rt]);return;}int m = (l + r) >> 1;build(lson);build(rson);pushUp(rt);}void update(int L, int R, int c, int l, int r, int rt){if(L <= l && r <= R){add[rt] += c;sum[rt] += (LL)c * (r - l+ 1);return;}pushDown(rt, r - l + 1);int m =(l + r) >> 1;if(L <= m) update(L, R, c, lson);if(R > m) update(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+1);int m = (l + r) >> 1;LL ret = 0;if(L <= m) ret += query(L, R, lson);if(m < R) ret += query(L, R, rson);return ret;}int main(){int N, Q;scanf("%d%d", &N, &Q);build(1,N, 1);while(Q--){char op[2];int a, b, c;scanf("%s", op);if(op[0] == 'Q'){scanf("%d%d", &a, &b);printf("%lld\n", query(a, b, 1, N, 1));}else{scanf("%d%d%d", &a, &b, &c);update(a, b, c, 1, N, 1);}}return 0;}
- pku 3468
- PKU 3468
- PKU 3468
- PKU 3468 线段树
- pku 3468 A Simple Problem with Integers
- pku 3468 线段树-又是成段修改
- PKU 3468 A Simple Problem with Integers
- PKU 3468 A Simple Problem with Integers
- PKU 3468 A Simple Problem with Integers
- PKU 2777 && PKU 3468 && HDU 1698【线段树:区间修改值】
- pku 1018 && pku 1095
- pku 3345 && pku 3107
- PKU 1161、PKU 2524、 PKU 1308
- [PKU] 3468 A Simple Problem with Integers -- 线段树
- pku -- 3468 A Simple Problem with Integers(线段树)
- pku 3468 A Simple Problem with Integers(线段树)
- PKU 3468 线段树,线段树 第 3 天
- pku 1003
- QtConcurrent::run() 的使用
- 如何学习一门外语?
- 科技论文引言的撰写
- JBPM4—请假流程
- IIS服务器内部错误
- PKU 3468
- 开发板如何支持 kernel通过nfs挂载rootfs(一)
- JfreeChart使用详解
- modbus poll
- UIResponder.h
- 什么是5W1H分析法?
- http 返回码 405 解决方案之一
- 动态链接时进程堆栈信息
- oracle学习记录之RMAN备份/恢复过程