zoukankan      html  css  js  c++  java
  • BZOJ1452_Count_KEY

    题目传送门

    二维树状数组,对于每个颜色开一个树状数组,用容斥求解。

    code:

    #include <cstdio>
    using namespace std;
    
    int read()
    {
        char c;while(c=getchar(),c<'0'||c>'9');
        int x=c-'0';while(c=getchar(),c>='0'&&c<='9')x=x*10+c-'0';
        return x; 
    }
    
    int N,M,tr[101][301][301],a[301][301];
    
    void add(int x,int y,int c,int p)
    {
        for(int i=x;i<=N;i+=i&-i)
            for(int j=y;j<=M;j+=j&-j)
                tr[c][i][j]+=p;
        return ;
    }
    
    int get(int x,int y,int c)
    {
        int ans=0;
            for(int i=x;i;i-=i&-i)
                for(int j=y;j;j-=j&-j)
                    ans+=tr[c][i][j];
        return ans;
    }
    
    int main()
    {
        N=read(),M=read();
            for(int i=1;i<=N;i++)
                for(int j=1;j<=M;j++)
                    add(i,j,a[i][j]=read(),1);
        int Q=read();
            while(Q--){
                int o=read();
                if(o==1){
                    int x=read(),y=read(),c=read();
                    add(x,y,a[x][y],-1);
                    add(x,y,a[x][y]=c,1);
                }
                else{
                    int x=read(),fx=read(),y=read(),fy=read(),c=read();
                    printf("%d
    ",get(fx,fy,c)-get(x-1,fy,c)-get(fx,y-1,c)+get(x-1,y-1,c));
                }
            }
    }
  • 相关阅读:
    Math.pow
    css3正方体
    制作一个百度换肤效果
    排他思想
    js栈和堆的区别
    js创建对象的几种方式(工厂模式、构造函数模式、原型模式)
    短网址
    this
    作用域
    JS 函数基础
  • 原文地址:https://www.cnblogs.com/Cptraser/p/8510965.html
Copyright © 2011-2022 走看看