UVA 12086 - Potentiometers(树状数组)
2014-07-29 00:31
399 查看
UVA 12086 - Potentiometers
题目链接题意:一个序列,两种操作,某个位置值变成x,询问l,r区间的和
思路:树状数组搞
代码:
#include <cstdio>
#include <cstring>
#define lowbit(x) (x&(-x))
const int N = 200005;
int n, bit
, num
;
void add(int x, int v) {
while (x <= n) {
bit[x] += v;
x += lowbit(x);
}
}
int query(int x) {
int ans = 0;
while (x) {
ans += bit[x];
x -= lowbit(x);
}
return ans;
}
int query(int l, int r) {
return query(r) - query(l - 1);
}
int main() {
int cas = 0;
while (~scanf("%d", &n) && n) {
if (cas) printf("\n");
int a, b;
memset(bit, 0, sizeof(bit));
for (int i = 1; i <= n; i++) {
scanf("%d", &num[i]);
add(i, num[i]);
}
char Q[10];
printf("Case %d:\n", ++cas);
while (~scanf("%s", Q) && Q[0] != 'E') {
scanf("%d%d", &a, &b);
if (Q[0] == 'M')
printf("%d\n", query(a, b));
else {
add(a, b - num[a]);
num[a] = b;
}
}
}
return 0;
}
相关文章推荐
- UVa12086 - Potentiometers(树状数组即Fenwick树)
- UVA 12086 Potentiometers(树状数组|| 线段树单点更新)
- uva 12086 - Potentiometers(树状数组)
- uva 12086 - Potentiometers(树状数组)
- uva 12086 - Potentiometers (树状数组)
- UVA 12086 - Potentiometers(树状数组)
- UVA 12086 Potentiometers(树状数组)
- UVA 12086 (树状数组)
- UVALive 2191 - Potentiometers (树状数组)
- UVALive 2191 Potentiometers (树状数组)
- UVA12086 树状数组 + 裸 +单点重置
- UVa:12086 Potentiometers
- UVAlive 5798 Jupiter Atacks!(树状数组)
- uva 10909 - Lucky Number(树状数组)
- UVALive 4329 Ping pong(树状数组求逆序数+顺序数)
- UVa 1513 / UVALive 5902 Movie collection (树状数组)
- UVALive-4329 Ping pong (树状数组)
- UVA 11525 Permutation(树状数组)
- uva 1406 - A Sequence of Numbers(树状数组)
- uvalive 4329 Ping Pong(树状数组)