hdu(4007)正方形能框住最大的点数

来源:互联网 发布:淘宝海运价格表 编辑:程序博客网 时间:2024/05/16 10:04
暴搞呗。。。
#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>#include <cstring>#include <cmath>#define inf 1000300000using namespace std;const int N=1093;struct Node{    int x,y;}point[N];int n,R;bool cmp(Node a,Node b){    return a.x<b.x;}int main(){   while(scanf("%d%d",&n,&R)!=EOF)   {    int max_x=-inf,min_x=inf,max_y=-inf,min_y=inf;    for(int i=0;i<n;i++)    {        scanf("%d%d",&point[i].x,&point[i].y);        min_x=min(point[i].x,min_x);        max_x=max(point[i].x,max_x);        min_y=min(point[i].y,min_y);        max_y=max(point[i].y,max_y);    }    if((max_x-min_x<=R)&&(max_y-min_y<=R))    {        printf("%d\n",n);        continue;    }    sort(point,point+n,cmp);    int ans=0;    for(int i=0;i<n;i++)    {        int fucky[N];        int cnt=0;        for(int j=i;j<n&&(point[i].x+R>=point[j].x);j++)        {           fucky[cnt++]=point[j].y;        }         sort(fucky,fucky+cnt);         int cot=0,temp=0;         for(int j=0;j<cnt&&temp<cnt;j++)          {             while(fucky[temp]-fucky[j]<=R&&temp<cnt)temp++;              if(cot<temp-j)cot=temp-j;          }          ans=max(ans,cot);    }    printf("%d\n",ans);   }}

原创粉丝点击