本文主要是介绍【ybt】【数据结构 树状数组 课过 例1】单点修改区间查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
单点修改区间查询
题目链接:YbtOJ/luogu
解题思路
树状数组模板题,不解释。
code
#include<iostream>
#include<cstdio>
#define int long long
#define lb(x) (x&(-x))
using namespace std;int n,q;
int c[1000010];void in(int x,int y)
{for(;x<=n;x+=lb(x))c[x]+=y;
}int fd(int x)
{int s=0;for(;x;x-=lb(x))s+=c[x];return s;
}signed main()
{cin>>n>>q;for(int i=1;i<=n;i++){int a;scanf("%lld",&a);in(i,a);}while(q--){int t,x,y;scanf("%lld%lld%lld",&t,&x,&y);if(t==1)in(x,y);elsecout<<fd(y)-fd(x-1)<<endl;}
}
这篇关于【ybt】【数据结构 树状数组 课过 例1】单点修改区间查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!