[라인 트리] 라인 트리 템플릿 호호판
#include
#include
#include
#include
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
const int N = 50010;
int tree[N<<2];
void push_up(int rt)
{
tree[rt] = tree[rt<<1] + tree[rt<<1|1];
}
void build(int l, int r, int rt)
{
if(l == r) {
scanf("%d", &tree[rt]);
return ;
}
int m = (l+r) >> 1;
build(lson); build(rson);
push_up(rt);
}
int query(int L, int R, int l, int r, int rt)
{
if(L <= l && r <= R) return tree[rt];
int m = (l+r) >> 1;
int ret = 0;
if(L <= m) ret += query(L, R, lson);
if(R > m) ret += query(L, R, rson);
return ret;
}
void update(int p, int val, int l, int r, int rt)
{
if(l == r) {
tree[rt] += val;
return ;
}
int m = (l+r) >> 1;
if(p <= m) update(p, val, lson);
else update(p, val, rson);
push_up(rt);
}
int main()
{
int T;
scanf("%d", &T);
while(T--) {
int n;
scanf("%d", &n);
build(1, n, 1);
char op[10];
int a, b;
while(~scanf("%s", op)) {
scanf("%d%d", &a, &b);
if(op[0] == 'Q') {
int ans = query(a, b, 1, n, 1);
printf("%d
", ans);
}
if(op[0] == 'A') update(a, b, 1, n, 1);
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
STC12C5201AD 샘플링 + 직렬 전송 템플릿텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.