zoukankan      html  css  js  c++  java
  • BZOJ 1452 Count 【模板】二维树状数组

    对每种颜色开一个二维树状数组

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 const int maxn=310;
     5 int t[110][maxn][maxn],c[maxn][maxn],Q,n,m,k,x,y,xx,yy,col; 
     6 inline void read(int &k){
     7     k=0; int f=1; char c=getchar();
     8     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
     9     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
    10     k*=f;
    11 }
    12 inline void add(int col,int x,int y,int del){
    13     for(int i=y;i<=n;i+=i&-i)
    14         for(int j=x;j<=m;j+=j&-j) t[col][i][j]+=del;
    15 }
    16 inline int query(int col,int x,int y){
    17     int ret=0;
    18     for(int i=y;i;i-=i&-i)
    19         for(int j=x;j;j-=j&-j) ret+=t[col][i][j];
    20     return ret;
    21 }
    22 int main(){
    23     read(n); read(m); 
    24     for(int i=1;i<=n;i++)
    25         for(int j=1;j<=m;j++) read(x),c[i][j]=x,add(x,i,j,1);
    26     read(Q);
    27     while(Q--){
    28         read(k);
    29         if(k==1){
    30             read(x); read(y); read(col);
    31             add(c[x][y],x,y,-1); add(col,x,y,1); c[x][y]=col;
    32         }
    33         else{
    34             read(x); read(xx); read(y); read(yy); read(col);
    35             printf("%d
    ",query(col,xx,yy)-query(col,x-1,yy)-query(col,xx,y-1)+query(col,x-1,y-1));
    36         }
    37     }
    38     return 0;
    39 }
    View Code
  • 相关阅读:
    微信小程序 数据绑定方式
    wxss与rpx
    Ubuntu 编译安装 Xdebug
    PHP运算符优先级
    有了art-template,如有神助
    laydate控制之前的日期不可选择
    label和span的区别
    phpredis基本操作
    FILE,id不一致
    双层保障,年龄的输入
  • 原文地址:https://www.cnblogs.com/DriverLao/p/7994449.html
Copyright © 2011-2022 走看看