luoguP5666 树的重心 树状数组
这道题在家里仔细想想还是挺好想的... 考场的时候还是要镇定,给每道题要安排足够的思考时间. code: #include <cstdio> #include <cstring> #include <vector> #include <string> #include <algorithm> #define N 500004 #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; int n; namespace BIT { int C[N]; int lowbit(int t) { return t&(-t); } void clr() { for(int i=0;i<N;++i) C[i]=0; } void update(int x,int v) { if(x<=0) return; while(x<N) C[x]+=v,x+=lowbit(x); } int ask(int x) { int re=0; for(int i=x;i>0;i-=lowbit(i)) re+=C[i]; return re; } int query(int l,int r) { l=max(1,l),r=min(r,n); return l>r?0:ask(r)-ask(l-1);