码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1195

时间:2015-06-09 15:45:45      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>
#define MAXN 1100
using namespace std;

long _m[MAXN][MAXN];//C数组

int n;

void init();
long Lowbit(int t);
long sum_b_e(int x,int y);
void plus(int x,int y,long num);
long give_place(int i,int j);
long square;

int main()
{
    //freopen("acm.acm","r",stdin);
    int num_0;
    int i;
    int j;
    int x;
    int y;
    int _x;
    int _y;
    int a;
    int _b;
    int _e;
    int ins;
    scanf("%d",&num_0);
    scanf("%d",&square);
    n = square;
    while(scanf("%d",&ins))
    {
        if(ins == 1)
        {
            scanf("%d%d%d",&x,&y,&a);
            ++ x;
            ++ y;

            plus(x,y,a);
        }
        else if(ins == 2)
        {
            scanf("%d%d%d%d",&x,&y,&_x,&_y);
            ++ x;
            ++ y;
            ++_x;
            ++_y;
            cout<<sum_b_e(_x,_y) + sum_b_e(x-1,y-1) - sum_b_e(_x,y-1) - sum_b_e(x-1,_y)<<endl;
        }
        else if(ins == 3)
        {
            break;
        }
    }
    
}


long Lowbit(int t) 
{ 
    return t & (t^(t - 1)); 
}


long sum_b_e(int x,int y) 
{ 
    long sum = 0; 
    int i;
    int j;
    for(i = x; i >= 1; i -= Lowbit(i))
    {
        for(j = y; j >= 1; j -= Lowbit(j))
        { 
            sum += _m[i][j];
        }
    } 
    return sum; 
}

void plus(int x,int y,long num) 
{ 
    int i;
    int j;
    for(i = x; i <= n; i += Lowbit(i))
    {
        for(j = y; j <= n; j += Lowbit(j))
        { 
             _m[i][j] += num; 
        } 
    }
} 

 

POJ 1195

标签:

原文地址:http://www.cnblogs.com/gavinsp/p/4563329.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!