树状数组 模板
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
const int N = 1e5 + 10;
int a[N],tr[N],n,m;
int lowbit(int x) {
return x & -x;
}
void add(int x,int v) {// 自底向上
for(int i = x;i <= n;i += lowbit(i)) tr[i] += v;
}
int query(int x) {// 自顶向下
int res = 0;
for(int i = x;i;i -= lowbit(i)) res += tr[i];
return res;
}
int main() {
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int x,y,k;
cin >> n >> m;
for(int i = 1;i <= n; ++i) cin >> a[i];
for(int i = 1;i <= n; ++i) add(i,a[i]);
while(m --) {
cin >> k >> x >> y;
if(k == 0) cout << query(y) - query(x - 1) << endl;
else add(x,y);
}
return 0;
}
原文链接: https://www.cnblogs.com/lukelmouse/p/12425921.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/333747
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!