萌新求助大佬
查看原帖
萌新求助大佬
247159
林楚颜楼主2020/11/21 16:54

RE三点,其余全错

求大佬指点

#include <bits/stdc++.h>
using namespace std;
int a[200000],c[200000],n,m,rw,x,k,y;
int lowbit(int x)
{
	return x&(-x);
}
void add(int x,int d)
{
	for(int i=x;i<=n;i+=lowbit(i))
	{
		c[i]+=d;
	}
}
int sum(int x)
{
	int ans=0;
	for(int i=x;i>0;i-=lowbit(i))
	{
		ans+=c[i];
	}
	return ans;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=n;i++)
	{
		add(i,a[i]);
	}
	for(int i=1;i<=m;i++)
	{
		cin>>rw;
		if(rw==1)
		{
			cin>>x>>k;
			a[x]=a[x]+k;
			add(x,a[i]);
		}
		else if(rw==2)
		{
			cin>>x>>y;
			cout<<sum(y)-sum(x-1)<<endl;
		}
	}
  return 0;
}

2020/11/21 16:54
加载中...