POJ PKU 2029 Get Many Persimmon Trees DP

DP预处理矩阵,使每个节点存储左上上角的总数,再枚举得结果。

 

#include<iostream>
using namespace std;
int w,h,map[105][105];
int main()
{
    int n,i,j,s,t;
    while (scanf("%d",&n)!=EOF&&n)

    {
        scanf("%d%d",&w,&h);
        for(i=0;i<=w;++i)
            for(j=0;j<=h;++j)
                map[i][j]=0;
        while (n--)
        {
            scanf("%d%d",&i,&j);
            map[i][j]=1;
        }
        for (i=1;i<=w;++i)
            for(j=1;j<=h;++j)
                map[i][j]+=map[i-1][j]+map[i][j-1]-map[i-1][j-1];
        scanf("%d%d",&s,&t);
        int max=0;
        for (i=s;i<=w;++i)
            for(j=t;j<=h;++j)
                if(max<map[i][j]-map[i-s][j]-map[i][j-t]+map[i-s][j-t])
                    max=map[i][j]-map[i-s][j]-map[i][j-t]+map[i-s][j-t];
        printf("%d\n",max);
    }
    return 0;
}

 

 

 

posted on 2013-03-04 18:26  Deller  阅读(147)  评论(0)    收藏  举报

导航