zoukankan      html  css  js  c++  java
  • 各版本树状数组 二维树状数组

      单点更新,区间查询

     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 }
  • 相关阅读:
    HTMLParser使用简介
    用自定义注解验证一些方法
    struts框架从.jsp页面直接访问action
    Hibernate更新数据(不用update也可以)
    设计模式的模板方式应用
    实现观察者模式设计方案
    struts2中的使用BaseAction获取Session
    brew,gem,rvm 和 bundler软件包的管理工具
    oh my zsh命令
    Ruby Gem命令
  • 原文地址:https://www.cnblogs.com/weeping/p/6839038.html
Copyright © 2011-2022 走看看