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; }
浙公网安备 33010602011771号