zoukankan      html  css  js  c++  java
  • POJ_1195 Mobile phones 【二维树状数组】

    版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/u013912596/article/details/33802561

    题目链接:http://poj.org/problem?id=1195

    纯纯的二维树状数组,不解释。仅仅须要注意一点,由于题目中的数组从0開始计算。所以维护的时候须要加1。由于树状数组的下标是不能为1的

    代码:

    #include <iostream>
    #include <cstdio>
    #define N 1030
    using namespace std;
    int c[N][N];
    int cas,n,x,y,a,l,b,r,t;
    int Lowbit(int x)
    {
        return x & (-x);
    }
    void Updata(int x,int y,int a)
    {
        int i,k;
        for(i=x; i<=n; i+=Lowbit(i))
            for(k=y; k<=n; k+=Lowbit(k))
               c[i][k]+=a;
    }
    int Getsum(int x,int y)
    {
        int i,k,sum = 0;
        for(i=x; i>0; i-=Lowbit(i))
            for(k=y; k>0; k-=Lowbit(k))
                sum += c[i][k];
        return sum;
    }
    int main()
    {
        scanf("%d%d",&cas,&n);
        while(~scanf("%d",&cas))
        {
            if(cas==1)
            {
                scanf("%d%d%d",&x,&y,&a);
                Updata(x+1,y+1,a);
            }
            if(cas==2)
            {
                scanf("%d%d%d%d",&l,&b,&r,&t);
                int a=Getsum(r+1,t+1)-Getsum(l,t+1)-Getsum(r+1,b)+Getsum(l,b);
                printf("%d
    ",a);
            }
            if(cas==3)
                return 0;
        }
        return 0;
    }
    

  • 相关阅读:
    C#如何连接wifi和指定IP
    3.4 小结
    3.3.4.5 起始与清除
    3.3.4.4 打印行
    3.3.4.3 设置字段分隔字符
    3.3.4.2 字段
    3.3.4.1 模式与操作
    3.3.4 使用 awk 重新编排字段
    3.3.3 使用 join 连接字段
    3.3.2 使用 cut 选定字段
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/9985982.html
Copyright © 2011-2022 走看看