社区讨论

树状数组70pts求调

P3374【模板】树状数组 1参与者 2已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@lo7kkme8
此快照首次捕获于
2023/10/27 03:20
2 年前
此快照最后确认于
2023/10/27 03:20
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int bit[1000010]; 
inline int lowbit(int x){
	return x&-x;
}
inline void add(int n,int i,int value){
	while(i<=n)
	{
		bit[i]+=value;
		i+=lowbit(i);
	}
}
inline int sum(int i){
	int sum=0;
	while(i>0)
	{
	    sum+=bit[i];
	    i-=lowbit(i);
	}
	return sum;
}
inline void op1(int n,int x,int k){
	add(n,x,k);
}
inline void op2(int l,int r){
	printf("%d\n",sum(r)-sum(l-1));
}
int main(){
	int n,m,value,op,x,y;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&value);
		add(n,i,value);
	}
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d",&op,&x,&y);
		if (op==1) op1(n,x,y);
		if (op==2) op2(x,y);
	}
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...