标签:des style blog http color os strong io
Time Limit: 5000MS | Memory Limit: 65536K | |
Total Submissions: 14489 | Accepted: 6735 |
Description
Input
Output
Sample Input
0 4 1 1 2 3 2 0 0 2 2 1 1 1 2 1 1 2 -1 2 1 1 2 3 3
Sample Output
3 4
Source
1 void Add(int x,int y,int a)
2 {
3 int i=x;
4 while(i<=s){
5 int j=y;
6 while(j<=s){
7 c[i][j]+=a;
8 j+=lowbit(j);
9 }
10 i+=lowbit(i);
11 }
12 }
2)求和:对左上角为(l,r),右下角为(b,t)的矩阵求和,即求该矩阵中所有元素的和。先求l到r的行矩阵的和,在求这个行矩阵和的时候,每一行要计算对应的b到t列的元素和。具体过程类似上述过程,将+lowbit()改为-lowbit()即可。限界为>=1。
代码:
1 #include <iostream>
2 #include <stdio.h>
3 #include <string.h>
4 using namespace std;
5
6 #define MAXN 1100
7
8 int c[MAXN][MAXN],s;
9
10 int lowbit(int x)
11 {
12 return x&-x;
13 }
14
15 void Add(int x,int y,int a) //加数
16 {
17 int i=x;
18 while(i<=s){ //行
19 int j=y;
20 while(j<=s){ //列
21 c[i][j]+=a;
22 j+=lowbit(j);
23 }
24 i+=lowbit(i);
25 }
26 }
27
28 int Sum(int l,int r,int b,int t) //求和
29 {
30 l--,b--;
31 int suml=0,sumr=0;
32 //求行矩阵和,l以上矩阵
33 while(l>=1){
34 int i=b,j=t;
35 int sumb=0,sumt=0;
36 //求列矩阵和
37 while(i>=1){
38 sumb+=c[l][i];
39 i-=lowbit(i);
40 }
41 while(j>=1){
42 sumt+=c[l][j];
43 j-=lowbit(j);
44 }
45 suml+=sumt-sumb;
46 l-=lowbit(l);
47 }
48 //求行矩阵和,r以上矩阵
49 while(r>=1){
50 int i=b,j=t;
51 int sumb=0,sumt=0;
52 //求列矩阵和
53 while(i>=1){
54 sumb+=c[r][i];
55 i-=lowbit(i);
56 }
57 while(j>=1){
58 sumt+=c[r][j];
59 j-=lowbit(j);
60 }
61 sumr+=sumt-sumb;
62 r-=lowbit(r);
63 }
64 return sumr-suml;
65 }
66
67 int main()
68 {
69 int cmd,x,y,a,l,r,b,t;
70
71 while(scanf("%d",&cmd)!=EOF){
72 switch(cmd){
73 case 0: //初始化矩阵
74 scanf("%d",&s);
75 memset(c,0,sizeof(c));
76 break;
77
78 case 1: //加数
79 scanf("%d%d%d",&x,&y,&a);
80 Add(x+1,y+1,a);
81 break;
82
83 case 2: //求矩阵和
84 scanf("%d%d%d%d",&l,&b,&r,&t);
85 printf("%d\n",Sum(l+1,r+1,b+1,t+1));
86 break;
87
88 case 3: //退出程序
89 return 0;
90 default:
91 break;
92 }
93 }
94 return 0;
95 }
Freecode : www.cnblogs.com/yym2013
poj 1195:Mobile phones(二维树状数组,矩阵求和),布布扣,bubuko.com
poj 1195:Mobile phones(二维树状数组,矩阵求和)
标签:des style blog http color os strong io
原文地址:http://www.cnblogs.com/yym2013/p/3872542.html