zoukankan      html  css  js  c++  java
  • POJ2155【二维树状数组,区间修改,点查询?】【又被输入输出坑】

    这题反反复复,到现在才过。

    这道题就是树状数组的逆用,用于修改区间内容,查询点的值。

    如果单纯就这个奇偶数来判的话,似乎这个思路比较好理解。

    看了一下国家集训队论文(囧),《关于0与1在信息学奥赛中的运用》,。

    还有这题卡在输入输出好久。

    1. update(a,b,1);
    2. update(a,d,-1);
    3. update(c,b,-1);
    4. update(c,d,1);

     用来判二维的情况!!

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    using namespace std;
    //关键还是对树状数组理解比较深,差不多算是知晓了。
    //区间修改,点查询
    int a[1005];
    int c[1005][1005];
    int n,m;
    int lowbit(int x)
    {
        return x&(-x);
    }
    void update(int x,int y,int pp)
    {
        for(int i=x;i<=1005;i+=lowbit(i))
            for(int j=y;j<=1005;j+=lowbit(j))
               c[i][j]+=pp;
    }
    int sum(int x,int y)
    {
        int ret=0;
        for(int i=x;i>=1;i-=lowbit(i))
            for(int j=y;j>=1;j-=lowbit(j))
               ret+=c[i][j];
        return ret;
    }
    int main()
    {
        int case_num;
        scanf("%d",&case_num);
        while(case_num--)
        {
            memset(c,0,sizeof(c));
            scanf("%d%d%*c",&n,&m);
            for(int i=0;i<m;i++)
            {
                char op;
                int a,b,c,d;
                scanf("%c",&op);
                if(op=='C')
                {
                  scanf("%d%d%d%d%*c",&a,&b,&c,&d);
                  c++;
                  d++;
                  update(a,b,1);//这个思路要比我那个几各情况If判断要好
                  update(a,d,-1);
                  update(c,b,-1);
                  update(c,d,1);
                }
                else if(op=='Q')
                {
                    scanf("%d%d%*c",&a,&b);
                    printf("%d
    ",1&sum(a,b));
                }
            }
            printf("
    ");
    
        }
        return 0;
    }
    
    


     

  • 相关阅读:
    都不敢上CSDN了
    什么是函数(function)?
    今天3/8妇女节
    一件有意思的事情:关于std::string和std::auto_ptr
    转两篇Link相关的文章
    DevIL Downloads
    状态模式(State Pattern)
    访问者模式(Visitor Pattern)
    羊皮卷的故事第二章
    备忘录模式(Memento Pattern)
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3249122.html
Copyright © 2011-2022 走看看