zoukankan      html  css  js  c++  java
  • hdu2642二维树状数组,单点修改+区间查询

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/2642/

    代码如下:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define scan(n) scanf("%d",&n)
     4 #define f(i,a,b) for(int i=a;i<=b;i++)
     5 #define pf printf
     6 #define maxn 1005
     7 int c[maxn][maxn];
     8 int lowbit(int x)
     9 {
    10     return x&(-x);
    11 }
    12 void update(int x,int y,int C)
    13 {
    14     for(int i=x;i<maxn;i+=lowbit(i))
    15     {
    16         for(int j=y;j<maxn;j+=lowbit(j))
    17         {
    18             c[i][j]+=C;
    19         }
    20     }
    21 }
    22 int query(int x,int y)
    23 {
    24     int ans=0;
    25     for(int i=x;i;i-=lowbit(i))
    26     {
    27         for(int j=y;j;j-=lowbit(j))
    28         {
    29             ans+=c[i][j];
    30         }
    31     }
    32     return ans;
    33 }
    34 int query(int x,int y,int xx,int yy)
    35 {
    36     return query(xx,yy)+query(x-1,y-1)-query(x-1,yy)-query(xx,y-1);
    37 }
    38 int main()
    39 {
    40     int n;
    41     //freopen("input.txt","r",stdin);
    42     //freopen("output.txt","w",stdout);
    43     scan(n);
    44     char s[4];
    45     int x,y,xx,yy;
    46     while(n--)
    47     {
    48         scanf("%s",&s);
    49         if(s[0]=='B')
    50         {
    51             scan(x);
    52             scan(y);
    53             x++;y++;
    54             if(query(x,y,x,y))continue;
    55             update(x,y,1);
    56         }
    57         else if(s[0]=='D')
    58         {
    59             scan(x);
    60             scan(y);
    61             x++,y++;
    62             if(!query(x,y,x,y))continue;
    63             update(x,y,-1);
    64         }
    65         else if(s[0]=='Q')
    66         {
    67             scanf("%d%d%d%d",&x,&xx,&y,&yy);
    68             if(x>xx)swap(x,xx);
    69             if(y>yy)swap(y,yy);
    70             x++,y++,xx++,yy++;
    71             pf("%d
    ",query(x,y,xx,yy));
    72         }
    73     }
    74 }
  • 相关阅读:
    关于博客
    latex句首缩进空格
    javable 之Iterable
    javable之Comparable
    常量池与Integer和String的“==”
    静态多态与动态多态
    String和StringBuilder效率不同的原理
    equals和hashcode
    Eclipse里面使用checkstyle(Google style)
    矩阵链乘问题
  • 原文地址:https://www.cnblogs.com/randy-lo/p/12438893.html
Copyright © 2011-2022 走看看