树状数组随机出RE是怎么回事?
查看原帖
树状数组随机出RE是怎么回事?
383524
阿陶陶陶楼主2020/11/7 10:22

测试了几次,开大数组也没用,一直有1~3个点RE,求大佬看看是怎么回事?

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int s[500010],n,m,ope,a,b;
int lowbit(int i)
{
	return (i&(-i));
}
void add(int x,int k)
{
	while(x<=n)
	{
		s[x]+=k;
		x+=lowbit(x);
	}
}
int sum(int x)
{
	int su=0;
	while(x)
	{
		su+=s[x];
		x-=lowbit(x);
	}
	return su;
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i)
	{
		scanf("%d",&ope);
		add(i,ope);
	}
	while(m--)
	{
		scanf("%d%d%d",&ope,&a,&b);
		if(ope==1)
			add(a,b);
		else
			printf("%d\n",sum(b)-sum(a-1));
	}
	return 0;
}
2020/11/7 10:22
加载中...