码迷,mamicode.com
首页 > 编程语言 > 详细

POJ 2029 Get Many Persimmon Trees 【 二维树状数组 】

时间:2015-06-22 14:54:13      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

题意:给出一个h*w的矩形,再给出n个坐标,在这n个坐标种树,再给出一个s*t大小的矩形,问在这个s*t的矩形里面最多能够得到多少棵树

 

二维的树状数组,求最多能够得到的树的时候,因为h,w都不超过500,直接暴力

技术分享
 1 #include<iostream>  
 2 #include<cstdio>  
 3 #include<cstring> 
 4 #include <cmath> 
 5 #include<stack>
 6 #include<vector>
 7 #include<map> 
 8 #include<set>
 9 #include<queue> 
10 #include<algorithm>  
11 using namespace std;
12 
13 typedef long long LL;
14 const int INF = (1<<30)-1;
15 const int mod=1000000007;
16 const int maxn=1005;
17 
18 int c[maxn][maxn];
19 
20 int lowbit(int x){ return x & (-x);}
21 
22 int sum(int x,int y){
23     int ret=0;
24     int y1;
25     while(x > 0){
26         y1=y;
27         while(y1 > 0){
28             ret += c[x][y1];y1-=lowbit(y1);
29         }
30         x-=lowbit(x);
31     }
32     return ret;
33 }
34 
35 void add(int x,int y,int d){
36     int y1;
37     while(x < maxn){
38         y1=y;
39         while(y1 < maxn){
40             c[x][y1] += d;y1+=lowbit(y1);
41         }
42         x+=lowbit(x);
43     }
44 }
45 
46 int main(){
47     int n;
48     while(scanf("%d",&n)!=EOF && n){
49         memset(c,0,sizeof(c));
50         int w,h;
51         scanf("%d %d",&w,&h);
52         while(n--){
53             int u,v;
54             scanf("%d %d",&u,&v);
55             add(v,u,1);
56         }
57         int x,y;
58         scanf("%d %d",&x,&y);swap(x,y);
59         
60         int ans=-1;
61         int tmp=0;
62         for(int i=1;i <=h;i++){
63             for(int j=1;j<=w;j++){
64                 tmp = sum(i+x-1,j+y-1)-sum(i-1,j+y-1)-sum(i+x-1,j-1)+sum(i-1,j-1);
65                 ans = max(ans,tmp);
66             }
67         }
68         printf("%d\n",ans);
69     }
70     return 0;
71 }
View Code

 

POJ 2029 Get Many Persimmon Trees 【 二维树状数组 】

标签:

原文地址:http://www.cnblogs.com/wuyuewoniu/p/4593228.html

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