poj3468 A Simple Problem with Integers
来源:互联网 发布:炉石传说 橙卡 知乎 编辑:程序博客网 时间:2024/05/18 02:01
线段树功能:update:成段增减 query:区间求和
/********************* * Author:fisty * Data:2014-10-18 * poj3468 * 线段树成段更新 *******************/#include <cstdio>#include <algorithm>using namespace std; #define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1typedef long long LL;const int maxn = 111111;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 m) { //向下更新if (add[rt]) {add[rt<<1] += add[rt];add[rt<<1|1] += add[rt];sum[rt<<1] += add[rt] * (m - (m >> 1));sum[rt<<1|1] += add[rt] * (m >> 1);add[rt] = 0;}}void build(int l,int r,int rt) {add[rt] = 0;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 (m < R) 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;}
0 0
- poj3468 A Simple Problem with Integers
- POJ3468:A Simple Problem with Integers
- poj3468 A Simple Problem with Integers
- poj3468 A Simple Problem with Integers
- POJ3468-A Simple Problem with Integers
- POJ3468--A Simple Problem with Integers
- POJ3468 A Simple Problem with Integers
- [POJ3468]A Simple Problem with Integers
- POJ3468 A Simple Problem with Integers
- POJ3468 A Simple Problem with Integers
- POJ3468 A Simple Problem with Integers
- poj3468 A Simple Problem with Integers
- POJ3468 A Simple Problem with Integers
- poj3468 A Simple Problem with Integers
- poj3468 A Simple Problem with Integers
- poj3468 A Simple Problem with Integers
- poj3468 A Simple Problem with Integers
- poj3468 A Simple Problem with Integers
- Tomcat session共享—MSM
- 闪电狗但施工方对的勾当更大幅度是
- 那么问题来了:为什么苹果设计被黑出翔还能大卖呢?
- System,Runtime,Data,Calendar,Math
- 漫谈程序员系列:程序员的生活就这样吗
- poj3468 A Simple Problem with Integers
- 似的电话费等刚刚还说通电话得天独厚等红灯
- xhtml笔记
- 使用mingw在eclipse运行c++程序
- C语言第三天
- Android环境下通过SOCKET传递Parcel包并解出数据的例子
- Matlab数据处理
- Java程序优化策略整理
- 二 Qt之Sqlite数据库操作