原题链接

题目大意:有一个发射站,覆盖范围是半径一定的一个半圆。在一个1000*1000平方米的地盘里有很多接收站。给定发射站的圆心,求最佳角度时能覆盖接收站的个数。

解法:本质上就是给一个原点和其他若干点,找出一个可以覆盖最多点的半圆。用了两个函数判断,一个是判断两点之间的距离,即该点到原点的距离是否在半径之内,筛选出第一步满足的点。另一个是判断两个点A、B是否在同一个半圆内,其实先确定一条直线AO,然后规定B点在AO的左侧就算在半圆内。每个点都遍历一次,找出最大值即可。

参考代码:

#include<iostream>
#include<cmath> using namespace std;
bool isInclude(int xx, int yy);
bool isCovered(int*, int*);
double cx,cy,r; int main(){ int xx,yy,point[150][2];
int i,j,k,n,m,count,max; while(cin>>cx>>cy>>r&&r>=0){
cin>>n;
m=0;
max=0;
for(i=0;i<n;i++){
cin>>xx>>yy;
if(isInclude(xx,yy)){
point[m][0]=xx;
point[m][1]=yy;
m++;
}
}
for(j=0;j<m;j++){
count=1;
for(k=0;k<m;k++){
if(k==j)continue;
if(isCovered(point[j],point[k]))
count++;
if(count>max)
max=count;
}
}
cout<<max<<endl;
} return 0;
} bool isInclude(int xx,int yy){
double d;
d=(xx-cx)*(xx-cx)+(yy-cy)*(yy-cy); //求两点的欧式距离
d=sqrt(d);
if(d<=r)
return true;
else
return false;
} bool isCovered(int *A, int *B){
int ax,ay,bx,by;
double cc;
ax=A[0];bx=B[0];
ay=A[1];by=B[1];
cc=(ax-cx)*(by-cy)-(ay-cy)*(bx-cx);//判断点是否在直线的同一侧
if(cc>0)
return false;
else
return true;
}

ZOJ 1041 Transmitters的更多相关文章

  1. [ACM_几何] Transmitters (zoj 1041 ,可旋转半圆内的最多点)

    Description In a wireless network with multiple transmitters sending on the same frequencies, it is ...

  2. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

  3. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  4. ZOJ题目分类

    ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...

  5. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  6. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

  7. BZOJ 1041: [HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3621  Solved: 1605[Submit][Sta ...

  8. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  9. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

随机推荐

  1. jsp作用域

    1.page: JSP页面内所有实例的默认作用域都是page,仅限于本页面使用 2.request: 同一次请求所涉及的服务器资源(可能是页面.Servlet等),例如,程序使用<jsp:for ...

  2. nuget的小Tips

    1.nuget常用命令 nuget spec -a bin\Debug\DllName.dll -f //根据dll生成.nuspec文件,这样会生成无用的默认标签,比如licenseUrl.tags ...

  3. AIX查看内存卡槽

    1.lscfg -vp|grep Processor 2.lscfg -vp|grep -p Memory

  4. AlarmManager

    转自:http://blog.csdn.net/wangxingwu_314/article/details/8060312 1.AlarmManager,顾名思义,就是“提醒”,是Android中常 ...

  5. Netstat命令(一)

    一.查看那些端口号被占用,在命令行中录入:netstat -an ,下图已查找80端口为例 二.查看哪个程序在使用80端口 三.查看占用80端口所对应的PID号 四.打开任务管理器,可以根据PID号找 ...

  6. HTML--9表单和验证事件

    1.表单验证<form></form> (1).非空验证(去空格) (2).对比验证(跟一个值对比) (3).范围验证(根据一个范围进行判断) (4).固定格式验证:电话号码, ...

  7. UITableViewCell 自适应高度 ios8特性

    这篇文章介绍了在一个动态数据的 table view 中,cell 根据 text view 内容的输入实时改变 cell 和 table view 的高度.自动计算 cell 高度的功能使用 iOS ...

  8. 猜猜两道Java基础面试题的结果

    class TA { public String s = "A"; public String getS() { return s; } } class TB extends TA ...

  9. ICTCLAS50中文分词软件“Init ICTCLAS failed!”问题

    if (!ICTCLAS_Init(Server.MapPath("ICTCLAS50")))            {               Response.Write( ...

  10. 前端页面js与flash交互——js获取flash对象,并传递参数

    背景介绍: 最近在搞一个项目,涉及到图片选取,裁剪,上传等,由于浏览器安全性问题,js无法获取到<input type="file">中选取的文件路径,而且对照片的裁剪 ...