ZOJ 1041 Transmitters
题目大意:有一个发射站,覆盖范围是半径一定的一个半圆。在一个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的更多相关文章
- [ACM_几何] Transmitters (zoj 1041 ,可旋转半圆内的最多点)
Description In a wireless network with multiple transmitters sending on the same frequencies, it is ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- ZOJ题目分类
ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- BZOJ 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3621 Solved: 1605[Submit][Sta ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
随机推荐
- 二模 (3) day1
第一题: 题目描述: 一个数列定义如下:f(1) = 1,f(2) = 1,f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给定 A,B 和 n 的值,要求计算 ...
- BindingNavigator操作DatagridView的数据
参考 http://wenku.baidu.com/link?url=NWfEfArPZvDO_aI-xEKBHVGoZY9wQO_Oty_GCsGLiPspheCzFYLf_dytuWAqN2_0A ...
- 向MySql中插入中文时出现乱码
这个因为字符集编码问题.在连接字符串中加上CharSet=gbk
- SGU 140 扩展欧几里得
题目大意: 给定序列a[] , p , b 希望找到一个序列 x[] , 使a1*x1 + a2*x2 + ... + an*xn = b (mod p) 这里很容易写成 a1*x1 + a2*x2 ...
- android baseApplication 基类
package com.free.csdn.base; import java.io.File;import java.util.ArrayList;import java.util.List; im ...
- 【转发】linux yum命令详解
linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...
- 理解NSAttributedString
An NSAttributedString object manages character strings and associated sets of attributes (for exampl ...
- IOS四种保存数据的方式
在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: 1.NSKeyed ...
- xml文件有误
Unable to start activity ComponentInfo{com.anzi.jmsht.scripturelibrary/com.anzi.jmsht.scripturelibra ...
- oracle 10gwindow7安装添加内容
F:\软件\database\stage\prereq\db\refhost.xml <!--Microsoft Windows 7 .Windows 8--> <OPERATING ...