题目描述

在这里插入图片描述

思路:

树状数组模板题

codecodecode

#include<iostream>
#include<cstdio>

using namespace std;

long long a[1010000], c[1000100];
long long n, m;

long long lowbit(long long x)
{
	return x&-x;
}

void add(long long x, long long y)
{
	for(; x<=n; x+=lowbit(x))
	{
		c[x]+=y;
	}
}

long long query(long long x)
{
	long long ans=0;
	for(; x; x-=lowbit(x))
	{
		ans+=c[x];
	}
	return ans;
}

int main()
{
	scanf("%lld%lld", &n, &m);
	for(long long i=1; i<=n; i++)
	{
		scanf("%lld", &a[i]);
		add(i, a[i]);
	}
	while(m--)
	{
		long long k, x, y;
		scanf("%lld%lld%lld", &k, &x, &y);
		if(k==1)
			add(x, y);
		else printf("%lld\n", query(y)-query(x-1));
	}
	return 0;
} 
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐