poj 1195 Mobile phones(树状数组二维)

    xiaoxiao2021-03-25  142

    这是道模版题,直接套模版就好了。。。。

    注意:我用的树状数组下标是从1开始的,而题目给定是从0开始的,所以有时要+1

    #include<stdio.h> #define N 1100 int n; int bit[N][N]; void add(int x,int y,int v) {           int i,j;           for(i=x;i<=n;i+=i&-i)           for(j=y;j<=n;j+=j&-j)           bit[i][j]+=v; } int sum(int x,int y) {      int res=0,i,j;      for(i=x;i>0;i-=i&-i)         for(j=y;j>0;j-=j&-j)           res+=bit[i][j];       return res;    } int main(void) {         int judge,c,x1,y1,x2,y2,i,j;         scanf("%d%d",&judge,&n);         while(~scanf("%d",&judge)&&judge!=3)         {               if(judge==1)               {                  scanf("%d%d%d",&x1,&y1,&c);                  add(x1+1,y1+1,c);               }               else               {                   scanf("%d%d%d%d",&x1,&y1,&x2,&y2);                   printf("%d\n",sum(x2+1,y2+1)-sum(x2+1,y1)-sum(x1,y2+1)+sum(x1,y1));               }         } }

    转载请注明原文地址: https://ju.6miu.com/read-11065.html

    最新回复(0)