树状数组
// BITree int bitree[maxn]; #define lowbit(n) ((n)&(-n)) void BuiBIT(int n,int a[]){ for(int i=1;i<=n;i++) Update(i,a[i]); } void Update(int n,int val){ for(i=n;i<=rst;i+=lowbit(i)) bitree[i]+=val; } int Query(int lst,int rst){ int sum=bitree[rst]; for(int i=lst;i>0;i-=lowbit(i)) sum-=bitree[i]; return sum; }