AC了,但是还是有点不明白
查看原帖
AC了,但是还是有点不明白
137723
pencil楼主2021/7/1 21:10
#include<bits/stdc++.h>
using namespace std;
int n,a[50010],c[50010],m;
int lowbit(int x){
	return x& -x;
}
int qiu(int x){
	int ans=0;
	for(;x>0;x-=lowbit(x)){
		ans+=c[x];
	}
	return ans;
}
void jia(int x,int y){
	for(;x<=n;x+=lowbit(x)){
		c[x]+=y;
	}
}
int main() {
	int i;
	cin>>n>>m;
	for(i=1;i<=n;i++){
		cin>>a[i];
		jia(i,a[i]);
	}
	
	int op,a1,a2;
	for(i=1;i<=m;i++){
		cin>>op>>a1>>a2;
		if(op==1){
			jia(a1,a2);
		}
		if(op==2){
			cout<<qiu(a2)-qiu(a1-1)<<endl;
		}
	}
	return 0;
}

为什么输出时a1要减一

2021/7/1 21:10
加载中...