• bzoj1452 [JSOI2009]Count


    题目链接

    其实就是二维树状数组模板。

    只不过要对每一种颜色开一个二维树状数组。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<string>
     5 #include<cstring>
     6 #include<cmath>
     7 #include<algorithm>
     8 #include<ctime>
     9 #include<queue>
    10 #include<stack>
    11 #include<map>
    12 #define lowbit(x) x&-x
    13 using namespace std;
    14 int n,m,h[333][333];
    15 struct shuzu
    16 {
    17     int aa[333][333];
    18     void add(const int &a,const int &b,const int &x)
    19     {
    20         for(int i=a;i<=n;i+=lowbit(i))
    21             for(int j=b;j<=m;j+=lowbit(j))
    22                 aa[i][j]+=x;
    23     }
    24     int query(const int &a,const int &b)
    25     {
    26         int ret=0;
    27         for(int i=a;i;i-=lowbit(i))
    28             for(int j=b;j;j-=lowbit(j))
    29                 ret+=aa[i][j];
    30         return ret;
    31     }
    32 }bb[111];
    33 int getint()
    34 {
    35     int ret=0;
    36     char ch=getchar();
    37     while(ch<'0'||ch>'9')ch=getchar();
    38     while(ch>='0'&&ch<='9')ret*=10,ret+=ch-'0',ch=getchar();
    39     return ret;
    40 }
    41 int main()
    42 {
    43     n=getint(),m=getint();
    44     for(int i=1;i<=n;i++)
    45         for(int j=1;j<=m;j++)
    46         {
    47             h[i][j]=getint();
    48             bb[h[i][j]].add(i,j,1);
    49         }
    50     int q;
    51     q=getint();
    52     for(int i=1;i<=q;i++)
    53     {
    54         int op,q,w,e,r,t;
    55         op=getint();
    56         if(op==1)
    57         {
    58             q=getint(),w=getint(),e=getint();
    59             bb[h[q][w]].add(q,w,-1);
    60             h[q][w]=e;
    61             bb[e].add(q,w,1);
    62         }
    63         else 
    64         {
    65             q=getint(),e=getint(),w=getint(),r=getint(),t=getint();
    66             int ret=bb[t].query(e,r)-bb[t].query(q-1,r)-bb[t].query(e,w-1)+bb[t].query(q-1,w-1);
    67             printf("%d
    ",ret);
    68         }
    69     }
    70     return 0;
    71 }
  • 相关阅读:
    Java入门(6)方法
    重构改善已有代码
    .NET面试题系列(八)电商瞬时抢购的方案
    .NET面试题系列(七)IIS
    设计模式综述
    基于ELK5.1(ElasticSearch, Logstash, Kibana)的一次整合测试
    acl.go
    单机部署-consul
    baseFileWriter.go
    config.go
  • 原文地址:https://www.cnblogs.com/HugeGun/p/5151045.html
Copyright © 2020-2023  润新知