树状数组模板
Posted hwy499
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树状数组模板相关的知识,希望对你有一定的参考价值。
HDU 1166(敌兵布阵)(树状数组 单点更新区间求和)
#include<iostream> #include<cstring> #include<cmath> using namespace std; #define lowbit(x) x & (-x)//lowbit函数 #define LL long long LL a[100005],n; void updata(LL x,LL v) {//更新函数 while(x<=n) { a[x]+=v; x+=lowbit(x); } } LL query(LL x) {//查询函数 LL sum=0; while(x) { sum+=a[x]; x-=lowbit(x); } return sum; } int main() { LL t; cin>>t; LL d=1; while(t--) { cout<<"Case "<<d<<":"<<endl; cin>>n; LL s; memset(a,0,sizeof(a)); for(LL i=1; i<=n; i++) { cin>>s; updata(i,s); } string ss; int l,r; while(cin>>ss) { if(ss=="End"){ break; } cin>>l>>r; if(ss[0]==‘A‘) { updata(l,r); } else if(ss[0]==‘S‘) { updata(l,-r); } else { cout<<query(r)-query(l-1)<<endl; } } d+=1; } return 0; }
以上是关于树状数组模板的主要内容,如果未能解决你的问题,请参考以下文章