【几何---正方形覆盖】hdu 4007
2011-09-04 17:33
337 查看
暴力,先确定左右边界,再遍历y,注意剪枝
#include <list> #include <map> #include <set> #include <queue> #include <string> #include <deque> #include <stack> #include <algorithm> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <limits.h> #include <time.h> #include <string.h> using namespace std; #define LL long long #define PI acos(-1.0) #define MAX INT_MAX #define MIN INT_MIN #define eps 1e-8 #define FRE freopen("a.txt","r",stdin) #define MOD 1000000007 #define N 1004 int n; struct point{ int x,y; }p ; int ll; int Y ; bool cmp(point a,point b){ return a.x<b.x; } int gao(int l,int r){ int i,j; int cnt=0; for(i=0;i<n;i++){ if(p[i].x>=l && p[i].x<=r) Y[cnt++]=p[i].y; } sort(Y,Y+cnt); int maxm=0; int tt=-1; for(i=0;i<cnt;i++){ int tot=0; if(Y[i]==tt)continue; tt=Y[i]; j=i; while(j<cnt&& Y[j]>=Y[i] && Y[j]<=Y[i]+ll){ j++; tot++; } if(tot>maxm)maxm=tot; } return maxm; } int main(){ while(scanf("%d%d",&n,&ll)!=EOF){ int i,j; for(i=0;i<n;i++){ scanf("%d%d",&p[i].x,&p[i].y); } sort(p,p+n,cmp); int ans=0; int tt=-1; for(i=0;i<n;i++){ int sum; if(p[i].x==tt)continue; tt=p[i].x; sum=gao(p[i].x,p[i].x+ll); if(sum>ans)ans=sum; } printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU - 4007 Dave (模拟&技巧)数学几何正方形最多可圈几个点
- HDU 5120 两圆环覆盖的面积(几何)
- HDU 5100 Chessboard 用 k × 1 的矩形覆盖 n × n 的正方形棋盘
- HDU - 4637(几何计算+区间覆盖)
- 【HDU 5206】Four Inages Strategy —— 计算几何之空间正方形
- HDU-正方形棋盘覆盖问题
- hdu 5533 计算几何 判断是否为正方形
- HDU 5251 矩形面积 (计算几何+旋转卡壳求覆盖凸包的最小矩形面积)
- HDU 5100 Chessboard (用k×1的矩形覆盖n×n的正方形)(找规律)
- HDU 3932(计算几何+最小圆覆盖)
- hdu 5206 Four Inages Strategy【计算几何】【判断空间正方形】
- HDU 4720(计算几何+最小圆覆盖)
- hdu 4637 Rain on your Fat brother(几何+区间覆盖)
- HUST 1632 Sheep’s Toy I(计算几何 正方形旋转覆盖面积)
- HDU 4606 Occupy Cities (计算几何+最短路+二分+最小路径覆盖)
- hdu(4007)正方形能框住最大的点数
- HDU 3007 最小圆覆盖 计算几何
- hdu 6055(简单几何、找正方形)
- hdu-3007(计算几何+最小覆盖圆)
- HDU 5100 Chessboard 用 k × 1 的矩形覆盖 n × n 的正方形棋盘