【模板】树状数组
发布时间:2020-12-14 04:39:44 所属栏目:大数据 来源:网络整理
导读:int n; const int maxn = 100010 ; int a[maxn]; int sum1[maxn]; int sum2[maxn];inline int lowbit( int x){ return x (- x);}inline void updata( int i, int k){ int x = i; while (i = n) { sum1[i] += k; sum2[i] += k * (x - 1 ); i += lowbit(i); }}
int n; const int maxn = 100010; int a[maxn]; int sum1[maxn]; int sum2[maxn]; inline int lowbit(int x) { return x & (-x); } inline void updata(int i,int k) { int x = i; while (i <= n) { sum1[i] += k; sum2[i] += k * (x - 1); i += lowbit(i); } } inline int get_sum(int i) { int res = 0; int x = i; while (i > 0) { res += x * sum1[i] - sum2[i]; i -= lowbit(i); } return res; } int main() { //输入n for (int i = 1; i <= n; i++) { //输入a[i] updata(i,a[i] - a[i - 1]); } int l,r,t; //输入l,t //[l,r]区间加t updata(l,t); updata(r + 1,t); //输入l,r int sum; //询问[l,r]区间和 sum = get_sum(r) - get_sum(l - 1); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |