• bzoj 1452: [JSOI2009]Count


    2016-06-20

    一读完题,就知道这是一个数据结构体,c只有100这么小,那我们就用100课二维树状数组来维护就行了。树状数组绝对是世上最美妙的数据结构(果然我这种蒟蒻只能做这种sb题)

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<cstdlib>
     5 #include<algorithm>
     6 #include<queue>
     7 #define M 309
     8 #define ll long long
     9 #define Mo 12345678
    10 using namespace std;
    11 ll read()
    12 {
    13     char ch=getchar();
    14     ll x=0,f=1;
    15     for(;ch<'0'||ch>'9';ch=getchar())
    16       if(ch=='-')
    17         f=-1;
    18     for(;ch>='0'&&ch<='9';ch=getchar())
    19       x=x*10+ch-'0';
    20     return x*f;
    21 }
    22 int n,m,a[M][M],shu[109][M][M];
    23 void jia(int x,int i,int j)
    24 {
    25     for(;i<=n;i+=i&-i)
    26       for(int k=j;k<=m;k+=k&-k)
    27         shu[x][i][k]++;
    28 }
    29 void jian(int x,int i,int j)
    30 {
    31     for(;i<=n;i+=i&-i)
    32       for(int k=j;k<=m;k+=k&-k)
    33         shu[x][i][k]--;
    34 }
    35 int query(int x,int i,int j)
    36 {
    37     int ans=0;
    38     for(;i;i-=i&-i)
    39       for(int k=j;k;k-=k&-k)
    40         ans+=shu[x][i][k];
    41     return ans;
    42 }
    43 int main()
    44 {
    45     n=read();
    46     m=read();
    47     for(int i=1;i<=n;i++)
    48       for(int j=1;j<=m;j++)
    49         {
    50             a[i][j]=read();
    51             jia(a[i][j],i,j);
    52         }
    53     int q=read();
    54     for(int i=1;i<=q;i++)
    55       {
    56           int k=read(),x1=read(),x2,y1,y2,c;
    57         if(k==1)
    58           {
    59               y1=read();
    60               c=read();
    61               jian(a[x1][y1],x1,y1);
    62               jia(c,x1,y1);
    63               a[x1][y1]=c;
    64           }
    65         else
    66           {
    67               x2=read();
    68               y1=read();
    69               y2=read();
    70               c=read();
    71               printf("%d
    ",query(c,x2,y2)-query(c,x2,y1-1)-query(c,x1-1,y2)+query(c,x1-1,y1-1));
    72           }
    73       }
    74     return 0;
    75 }
  • 相关阅读:
    商业即生活,一些思考和感悟
    Unity中使用摇杆控制
    在家乡做什么生意比较好?且看雷家第一智囊的分析
    Android5.0之Toobar的使用
    Android5.0常用颜色属性说明
    hiho week 38 P1 : 二分·二分答案
    CCF模拟题 字符串匹配
    CCF模拟题 最优配餐
    CCF模拟题 相反数
    CCF模拟题 最优灌溉
  • 原文地址:https://www.cnblogs.com/xiw5/p/5599685.html
Copyright © 2020-2023  润新知