社区讨论
求助关于树状数组的
学术版参与者 5已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 7 条
- 当前快照
- 1 份
- 快照标识符
- @mi7yoejb
- 此快照首次捕获于
- 2025/11/21 05:46 4 个月前
- 此快照最后确认于
- 2025/11/21 05:46 4 个月前
树状数组:单点更新+区间查询
洛谷AC
其他OJ TLE
麻烦dalao改一下,谢谢
CPP#include<iostream>
#include<cstdio>
using namespace std;
#define lowbit(i) i&-i
#define abs(x) x<0?x:0
#define MAX 500005
int n,m,arr[MAX];
int sum(int x){
int res=0;
for(;x;x-=lowbit(x))
res+=arr[x];
return res;
}
void add(int x,int uvs){
for(;x<=n;x+=lowbit(x))
arr[x]+=uvs;
}
void work(){
int p,x,y;
cin>>n>>m;
for(int i=1;i<=n;++i){
cin>>x;
add(i,x);
}
for(int i=1;i<=m;++i){
cin>>p>>x>>y;
if(p==1)
add(x,y);
if(p==2)
cout<<sum(y)-sum(x-1)<<"\n";
}
}
int main(){
work();
return 0;
}
回复
共 7 条回复,欢迎继续交流。
正在加载回复...