求调
  • 板块学术版
  • 楼主dabawang
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/14 08:58
  • 上次更新2024/8/14 11:00:24
查看原帖
求调
371412
dabawang楼主2024/8/14 08:58

题目

#include<bits/stdc++.h>
using namespace std;
#define N 4*1001000
int n,m,k;
struct shu
{
	int l,r,num;
}tree[N];
int a[N];
int s;
void build(int i,int l,int r)
{
	tree[i].l=l;
	tree[i].r=r;
	if(l==r)
	  return ;
	int mid=(l+r)/2;
	build(i*2,l,mid);
	build(i*2+1,mid+1,r);
}
int add(int i)
{
	if(tree[i].l==tree[i].r)
	  {
	  	tree[i].num=a[tree[i].r];
	  	return tree[i].num;
	  }
	tree[i].num=add(i*2)+add(i*2+1);
	return tree[i].num;
}
void quxiu(int i,int l,int r,int k)
{
	if(l<=tree[i].l&&tree[i].r<=r)
	  {
	  	tree[i].num+=k;
	  	return ;
	  }
	if(l<=tree[i*2].r)
	  quxiu(i*2,l,r,k);
	if(tree[i*2+1].l<=r)
	  quxiu(i*2+1,l,r,k);
}
void cha(int i,int l,int r)
{
	if(l<=tree[i].l&&tree[i].r<=r)
	  {
		s=s+tree[i].num;
		return ;
	  }
	if(l<=tree[i*2].r)
	  cha(i*2,l,r);
	if(tree[i*2+1].l<=r)
	  cha(i*2+1,l,r);
}
int main()
{
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
	  cin>>a[i];
	build(1,1,n);
	add(1);
	for(int i=1;i<=m;i++)
	  {
	  	int x,y,z;
	  	cin>>x>>y>>z;
	  	quxiu(1,x,y,z);
	  }
	for(int i=1;i<=k;i++)
	  {
	  	int x,y;
	  	cin>>x>>y;
	  	s=0;
	  	cha(1,x,y);
	  	cout<<s<<endl;
	   } 
}
2024/8/14 08:58
加载中...