POJ 1106 极角排序
来源:互联网 发布:网络综艺节目的特点 编辑:程序博客网 时间:2024/06/07 20:46
题意给出一些点片段圆心为t半径为r的半圆最大能覆盖多少个点。
首先在输入的时候把距离大于半径的点筛出去。剩余点通过极角排序然后枚举半圆的一条边通过该点能覆盖的点数取最大值就可以了。
#include <iostream>#include<cstdio>#include<algorithm>using namespace std;struct point{ int x,y;};int Direction(point a,point b,point c){ return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);}int adistan(point a,point b){ return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);}point t,data[2000];bool cmp(point a,point b){ if(Direction(t,a,b)>=0) return 1; return 0;}int main(){ double r; int n; while(~scanf("%d%d%lf",&t.x,&t.y,&r),r>=0) { scanf("%d",&n); int w=0,maxnum=0; while(n--) { point temp; scanf("%d%d",&temp.x,&temp.y); if((double)adistan(temp,t)<=r*r) data[w++]=temp; } sort(data,data+w,cmp); for(int i=w; i<w+w; i++) data[i]=data[i-w]; for(int i=0; i<w; i++) { int num=1; for(int j=i+1; j<w+i; j++) { if(Direction(t,data[i],data[j])<0) break; num++; } maxnum=max(maxnum,num); } printf("%d\n",maxnum); } return 0;}
- POJ 1106 极角排序
- poj 1106 Transmitters(极角排序)
- poj 1696 极角排序
- poj 2007(极角排序)
- POJ 2007 极角排序
- POJ 1696 极角排序
- poj 2007 极角排序
- poj 2007 极角排序
- POJ 2007 极角排序
- poj 3850 极角排序
- poj 1696(极角排序)
- POJ 1696 极角排序
- POJ 2007 极角排序
- POJ 1106 Transmitters(计算几何 极角排序啊)
- poj 2007 Scrambled Polygon 极角排序
- POJ 2007 Scrambled Polygon(极角排序)
- POJ 2007 Scrambled Polygon 极角排序
- poj-1696-Space Ant-极角排序
- 2月的尾巴是狮子座
- 黑马程序员--Jquery 学习笔记
- Android应用程序键盘(Keyboard)消息处理机制分析
- PowerDesigner(CDM—PDM—SQL脚本的转换流程) 随笔
- updatepanel中gridview导出到Excel解决办法
- POJ 1106 极角排序
- Linux启用MySQL的InnoDB引擎
- android -- libcurl移植、编译与测试
- ubuntu 12.04 server + OPENACS(TR069)安装配置日记
- 多进程与多线程的选择
- PL/SQL 怎么判断两个结果集是否相等
- QT中QWidget、QDialog及QMainWindow的区别
- 1013 Digital Roots
- java单例模式详解