看看数据样例吧
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 5e5 + 5;
int n, m;
int a[MAXN], fenwick[MAXN];
// 单点更新函数
void update(int x, int delta) {
while (x <= n) {
fenwick[x] += delta;
x += x & -x; // x的二进制最低位的1变成0
}
}
// 区间求和函数
int query(int x) {
int sum = 0;
while (x > 0) {
sum += fenwick[x];
x -= x & -x; // x的二进制最低位的1变成0
}
return sum;
}
int main() {
cin >> n;
cin>>m;
while (m--) {
char op;int x, y;
cin >> op >> x >> y;
if (op == 'x') {
update(x, y); // 单点更新
} else {
cout << query(y) - query(x - 1) << endl; // 区间求和
}
}
return 0;
}