POJ2528
来源:互联网 发布:河南胸模招聘淘宝 编辑:程序博客网 时间:2024/05/18 00:59
题目链接:http://poj.org/problem?id=2528
区间增减模板题,不论是update还是query中都要进行下放标记。
#include <iostream>#include <cstdio>#define lson l, m, x<<1#define rson m+1, r, x<<1|1using namespace std;typedef long long type;const int INF = (1<<31)-1;const int maxn =100000 + 10;type sum[maxn << 2];type delta[maxn << 2];type a[maxn];type n, m;void pushUp(int x){ sum[x] = sum[x<<1] + sum[x<<1|1];}void pushDown(int x, int len){ if (delta[x]) { delta[x<<1] += delta[x];delta[x<<1|1] += delta[x]; sum[x<<1] += (len - (len >> 1)) * delta[x]; sum[x<<1|1] += (len >> 1) * delta[x]; delta[x] = 0; }}void build(int l, int r, int x){ if(l == r) { sum[x] = a[l]; return; } int m=(l+r)>>1; build(lson); build(rson); pushUp(x);}void update(int l, int r, int x, int L, int R, type C){ if (L <= l && r <= R) { sum[x] += C * (r-l+1); delta[x] += C; return ; } pushDown(x, r-l+1); int m = (l + r) >> 1; if (L <= m) update(lson, L, R, C); if (R > m) update(rson, L, R, C); pushUp(x);}type query(int l, int r, int x, int L, int R){ if (L <= l && r <= R) { return sum[x]; } pushDown(x, r-l+1); int m = (l + r) >> 1; type ret = 0; if (L <= m) ret += query(lson, L, R); if (R > m) ret += query(rson, L, R); return ret;}int main(){ scanf("%d%d",&n, &m); for (int i=0; i<n; i++) scanf("%I64dd",&a[i+1]); getchar(); build(1, n, 1); for (int i=0; i<m; i++) { char c; scanf("%c",&c); getchar(); if (c == 'C') { type a, b, c; scanf("%d%d%I64dd", &a, &b, &c); getchar(); update(1, n, 1, a, b, c); } else { type a, b; scanf("%d%d", &a, &b); getchar(); printf("%I64d\n", query(1, n, 1, a, b)); } } return 0;}
0 0
- POJ2528
- poj2528
- poj2528
- POJ2528
- poj2528
- POJ2528
- POJ2528
- poj2528
- POJ2528
- POJ2528
- POJ2528
- poj2528
- poj2528
- poj2528 poj1436
- poj2528 &&poj2777
- lightoj1207Posters_For_Election&&POJ2528
- 线段树(poj2528)
- POJ2528 Mayor's posters
- 统计输入的每个值连续出现多少次
- 贝塞尔曲线
- 救基友记2
- Ubuntu16.04 CPU版安装caffe问题小结
- 求最小公倍数或最大公约数
- POJ2528
- python中的文件名操作模块glob
- 二叉树两个结点的最低共同父结点
- Java学习笔记_004_补充_抽象类
- 【Linux网络编程】超时检测
- UVALive-7222 National Disaster【思维+排序+模拟】
- 关于MATLAB中imfilter函数的说明
- scp命令获取远程文件
- java中的“死锁”现象