POJ 3468
来源:互联网 发布:火并软件下载 编辑:程序博客网 时间:2024/05/16 09:39
//4796K2563MS#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#define lch(x) ((x)<<1)#define rch(x) ((x)<<1 | 1)using namespace std;typedef long long LL;const int MAX_N = 100000;LL add[MAX_N<<2];LL sum[MAX_N<<2];inline void push_up(int n){ sum[n] = sum[lch(n)] + sum[rch(n)];}inline void push_down(int n, int m){ if(add[n]){ add[lch(n)] += add[n]; add[rch(n)] += add[n]; int mid = m>>1; sum[lch(n)] += add[n]*(m - mid); sum[rch(n)] += add[n]*mid; add[n] = 0; }}void build(int n, int l, int r){ add[n] = 0; if(l == r){ scanf("%I64d", &sum[n]); return; } int mid = (l+r)>>1; build(lch(n), l, mid); build(rch(n), mid+1, r); push_up(n);}void modify(int a, int b, int d, int n, int l, int r){ if(a <=l && r <= b){ add[n] += d; sum[n] += (LL)d*(r - l + 1); return; } push_down(n, r - l + 1); int mid = (l+r)>>1; if(a <= mid) modify(a, b, d, lch(n), l, mid); if(mid+1 <= b) modify(a, b, d, rch(n), mid+1, r); push_up(n);}LL query(int a, int b, int n, int l, int r){ if(a <= l && r <= b){ return sum[n]; } push_down(n, r - l + 1); int mid = (l+r)>>1; LL res = 0; if(a <= mid) res += query(a, b, lch(n), l, mid); if(mid+1 <= b) res += query(a, b, rch(n), mid+1, r); return res;}int main(){ int N, Q; while(~scanf("%d%d", &N, &Q)){ build(1, 1, N); char str[5]; int a, b, c; for(int i=1; i<=Q; i++){ scanf("%s", str); if(str[0] == 'C'){ scanf("%d%d%d", &a, &b, &c); modify(a, b, c, 1, 1, N); } else if(str[0] == 'Q'){ scanf("%d%d", &a, &b); printf("%I64d\n", query(a, b, 1, 1, N)); } } } return 0;}
0 0
- poj 3468
- POJ 3468
- poj 3468
- poj 3468
- poj 3468
- poj 3468
- poj 3468
- POJ 3468
- POJ 3468
- POJ 3468
- POJ 3468
- POJ 3468
- poj 3468
- poj-3468
- POJ 3468
- POJ 3468
- POJ-3468
- poj 3468
- Python多线程
- Ubuntu 14.04 LTS反编译apk
- python操作mysql数据库
- POJ2914 Minimum Cut 最小割集
- js获取手机和电脑屏幕宽度的方法
- POJ 3468
- 手机版html
- hdu find the nth digit(1597)
- LeetCode-Length of Last Word
- angularjs(step by step):了解angularjs
- python操作mysql数据库
- 高手详解SQL性能优化十条经验
- 大数问题之 Lovekey hdoj 2100
- java 反射 Field类