http://poj.org/problem?id=2029
这个从DP专题找出来的,据说是树状数组DP,然后看了很长一段时间,没有发现树状数组的影子,然后看到数据范围只有100,N^2 的时间复杂度应该没什么问题,果断暴力下,OMS ,容我看看别人BLOG,Orz 下树状数组怎么写(未完待续)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 110
#define INF 0xfffffff
int n,w,h,s,t;
int map[N][N];
int ans;
int main()
{
int i,j,tmp;
while(~scanf("%d",&n),n){
scanf("%d%d",&w,&h);
while(n--){
scanf("%d%d",&i,&j);
map[i][j]=1;
}
scanf("%d%d",&s,&t);
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];
}
}
ans = -INF;
for(i=s;i<=w;i++){
for(j=t;j<=h;j++){
tmp = map[i][j] - map[i-s][j] - map[i][j-t] + map[i-s][j-t];
if(tmp > ans )ans = tmp;
}
}
printf("%d\n",ans);
memset(map,0,sizeof(map));
}
return 0;
}