• 各版本树状数组 二维树状数组


      单点更新,区间查询

     1 //树状数组:单点更新,区间查询
     2 int n,c[K];
     3 void add(int x,int v)
     4 {
     5     while(x<=n) c[x]+=v,x+=x&-x;
     6 }
     7 int get_sum(int x)
     8 {
     9     int ret=0;
    10     while(x) ret+=c[x],x-=x&-x;
    11     return ret;
    12 }

     区间增减,单点查询

     1 //树状数组:区间增减,单点查询
     2 //修改区间[l,r]时:add(l,v),add(r+1,-v)
     3 int n,c[K];
     4 void add(int x,int v)
     5 {
     6     while(x<=n) c[x]+=v,x+=x&-x;
     7 }
     8 int get_sum(int x)
     9 {
    10     int ret=0;
    11     while(x) ret+=c[x],x-=x&-x;
    12     return ret;
    13 }

    区间增减,区间查询

     1 //树状数组:区间增减,区间查询
     2 //修改区间[l,r]时:add(l,v),add(r+1,-v)
     3 int n,c1[K],c2[K];
     4 void add(int x,int v)
     5 {
     6     for(int i=x;i<=n;i+=i&-i) c1[i]+=x,c2[i]+=x*v;
     7 }
     8 int get_sum(int x)
     9 {
    10     int ret=0;
    11     for(int i=x;i<=n;i-=i&-i) ret+=x*c1[i]-c2[i];
    12     return ret;
    13 }

    二维树状数组:单点修改,区间查询

     1 //二维树状数组:单点修改,区间查询
     2 int c[K][K],N=1e3+5;
     3 void add(int x,int y,int v)
     4 {
     5     for(int i=x;i<=N;i+=i&(-i))
     6     for(int j=y;j<=N;j+=j&(-j))
     7         c[i][j]+=v;
     8 }
     9 int get_sum(int x,int y)
    10 {
    11     int ret=0;
    12     for(int i=x;i;i-=i&(-i))
    13     for(int j=y;j;j-=j&(-j))
    14         ret+=c[i][j];
    15     return ret&1;
    16 }

    二维树状数组:区间修改,单点查询

     1 //二维树状数组:区间修改,单点查询
     2 //修改矩形区域:(lx,ly),(lx,ry),(rx,ly),(rx,ry)时
     3 //add(lx,ly,v),add(rx+1,ry+1,v),add(lx,ry+1,-v),add(rx+1,ly,-v);
     4 int c[K][K],N=1e3+5;
     5 void add(int x,int y,int v)
     6 {
     7     for(int i=x;i<=N;i+=i&(-i))
     8     for(int j=y;j<=N;j+=j&(-j))
     9         c[i][j]+=v;
    10 }
    11 int get_sum(int x,int y)
    12 {
    13     int ret=0;
    14     for(int i=x;i;i-=i&(-i))
    15     for(int j=y;j;j-=j&(-j))
    16         ret+=c[i][j];
    17     return ret&1;
    18 }
  • 相关阅读:
    poj3252(组合数)
    cf-Global Round2-E. Pavel and Triangles
    cf-Global Round2-D. Frets On Fire(二分)
    cf-Global Round2-C. Ramesses and Corner Inversion(思维)
    trick
    2019ICPC南京网络赛B super_log(a的b塔次方)
    欧拉定理,欧拉降幂
    F. Moving On
    Codeforces Round #200 (Div. 1)D. Water Tree
    hdu5452
  • 原文地址:https://www.cnblogs.com/weeping/p/6839038.html
Copyright © 2020-2023  润新知