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

POJ 2029 Get Many Persimmon Trees(DP)

时间:2014-07-22 22:41:34      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   数据   

题目链接

题意 : 给你每个柿子树的位置,给你已知长宽的矩形,让这个矩形包含最多的柿子树。输出数目

思路 :数据不是很大,暴力一下就行,也可以用二维树状数组来做。

bubuko.com,布布扣
 1 //2029
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <iostream>
 5 
 6 using namespace std ;
 7 
 8 int mapp[110][110] ;
 9 
10 int main()
11 {
12     int N ,S,T ,W,H;
13     while(scanf("%d",&N) != EOF && N)
14     {
15         int x,y ;
16         memset(mapp,0,sizeof(mapp)) ;
17         scanf("%d %d",&W,&H) ;
18         for(int i = 0 ; i < N ; i++)
19         {
20             scanf("%d %d",&x,&y) ;
21             mapp[x][y] = 1 ;
22         }
23         scanf("%d %d",&S,&T) ;
24         for(int i = 1 ; i <= W ; i++)
25             for(int j = 1 ; j <= H ; j++)
26                 mapp[i][j] += (mapp[i-1][j]+mapp[i][j-1]-mapp[i-1][j-1]) ;
27         int ans = -1 ;
28         for(int i = S ; i <= W ;i ++)
29         {
30             for(int j = T ; j <= H ; j++)
31             {
32                 ans = max(ans,mapp[i][j]-mapp[i-S][j]-mapp[i][j-T]+mapp[i-S][j-T]) ;
33             }
34         }
35         printf("%d\n",ans) ;
36     }
37     return 0 ;
38 }
View Code

二维树状数组

bubuko.com,布布扣
 1 #include<iostream>
 2 #include<math.h>
 3 #include<stdio.h>
 4 #include<string.h>
 5 #define MAX 102
 6 using namespace std;
 7 int c[MAX][MAX];
 8 int lowbit(int x)
 9 {
10     return x & (-x);
11 }
12 void add( int x,int y)
13 {
14     int i=x,j=y;
15       for(i=x;i<MAX;i+=lowbit(i))
16           for(j=y;j<MAX;j+=lowbit(j))
17               c[i][j]++;
18 }
19 int sum(int x,int y)
20 {
21    int i,k,sum = 0;
22     for(i=x; i>0; i-=lowbit(i))
23         for(k=y; k>0; k-=lowbit(k))
24             sum += c[i][k];
25     return sum;
26 }
27 int main()
28 {
29     int w,h,i,j,s,t,n;
30     int x,y,ans;
31     while(scanf("%d",&n))
32     {
33         if(n==0)break;
34         memset(c,0,sizeof(c));
35         scanf("%d%d",&w,&h);
36         for(i=0;i<n;i++)
37         {
38             scanf("%d%d",&x,&y);
39             add(x,y);
40         }
41         scanf("%d%d",&s,&t);
42         ans=0;
43         for(i=s;i<=w;i++)
44         {
45             for(j=t;j<=h;j++)
46             {
47                 ans=max(ans,sum(i,j)-sum(i-s,j)-sum(i,j-t)+sum(i-s,j-t));
48             }
49         }
50         printf("%d\n",ans);
51     }
52 }
View Code

POJ 2029 Get Many Persimmon Trees(DP),布布扣,bubuko.com

POJ 2029 Get Many Persimmon Trees(DP)

标签:style   blog   http   color   os   数据   

原文地址:http://www.cnblogs.com/luyingfeng/p/3860224.html

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