| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求解释: if (n > 0)就挂了,if (n)就AC!!! 害我浪费两个小时!#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAXN 100050
__int64 tree[MAXN * 4], lazyAdd[MAXN * 4];
inline void PushUp(int node)
{
tree[node] = tree[node * 2] + tree[node * 2 + 1];
}
void PushDown(int node, __int64 length)
{
if (lazyAdd[node])// *******如果是if (lazyAdd[node] > 0)就会WA!!
{
tree[node * 2] += lazyAdd[node] * (length - length / 2);
tree[node * 2 + 1] += lazyAdd[node] * (length / 2);
lazyAdd[node * 2] += lazyAdd[node];
lazyAdd[node * 2 + 1] += lazyAdd[node];
lazyAdd[node] = 0;
}
}
void BuildSegmentTree(int node, int l, int r)
{
lazyAdd[node] = 0;
if (l == r)
{
scanf("%I64d", &tree[node]);
}
else
{
int m = (l + r) / 2;
BuildSegmentTree(node * 2, l, m);
BuildSegmentTree(node * 2 + 1, m + 1, r);
PushUp(node);
}
}
__int64 Query(int node, int cl, int cr, int ql, int qr)
{
if (ql <= cl && cr <= qr)
{
return tree[node];
}
PushDown(node, cr - cl + 1);
int m = (cl + cr) / 2;
__int64 sum = 0;
if (ql <= m) sum += Query(node * 2, cl, m, ql, qr);
if (qr > m) sum += Query(node * 2 + 1, m + 1, cr, ql, qr);
return sum;
}
void Update(int node, int cl, int cr, int ql, int qr, __int64 add)
{
__int64 length = cr - cl + 1;
if (ql <= cl && cr <= qr)
{
tree[node] += add * length;
lazyAdd[node] += add;
}
else
{
PushDown(node, length);
int m = (cl + cr) / 2;
if (ql <= m) Update(node * 2, cl, m, ql, qr, add);
if (qr > m) Update(node * 2 + 1, m + 1, cr, ql, qr, add);
PushUp(node);
}
}
int main()
{
char op[2];
int n, q, a, b, c;
scanf("%d %d", &n, &q);
BuildSegmentTree(1, 1, n);
while (q--)
{
scanf("%s", op);
if (op[0] == 'C')
{
scanf("%d %d %d", &a, &b, &c);
Update(1, 1, n, a, b, c);
}
else
{
scanf("%d %d", &a, &b);
printf("%I64d\n", Query(1, 1, n, a, b));
}
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator