bzoj1338: Pku1981 Circle and Points单位圆覆盖
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1338
1338: Pku1981 Circle and Points单位圆覆盖
Time Limit: 3 Sec Memory Limit: 162 MB
Submit: 190 Solved: 79
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
6.47634 7.69628
5.16828 4.79915
6.69533 6.20378
6
7.15296 4.08328
6.50827 2.69466
5.91219 3.86661
5.29853 4.16097
6.10838 3.46039
6.34060 2.41599
8
7.90650 4.01746
4.10998 4.18354
4.67289 4.01887
6.33885 4.28388
4.98106 3.82728
5.12379 5.16473
7.84664 4.67693
4.02776 3.87990
20
6.65128 5.47490
6.42743 6.26189
6.35864 4.61611
6.59020 4.54228
4.43967 5.70059
4.38226 5.70536
5.50755 6.18163
7.41971 6.13668
6.71936 3.04496
5.61832 4.23857
5.99424 4.29328
5.60961 4.32998
6.82242 5.79683
5.44693 3.82724
6.70906 3.65736
7.89087 5.68000
6.23300 4.59530
5.92401 4.92329
6.24168 3.81389
6.22671 3.62210
0
Sample Output
5
5
11
HINT
单位圆覆盖。
n^3算法:考虑覆盖最多的圆,一定有2个点在圆上,所以n^2枚举,o(n)计算覆盖多少点即可。
n^2logn算法:考虑以每个点为圆心做单位圆 ,当一段弧被另一圆覆盖时,表示在这个弧上的点做圆,可覆盖两个点。所以枚举一个点做圆心,再1~n枚举计算交弧的级角区间,sort一下,最大覆盖次数即为答案。
n^2logn代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define inf 2e9
#define maxn 305
#define pi acos(-1)
using namespace std;
int n,top,ans;
const double eps=1e-;
struct fuck{double x,y;}p[maxn];
struct fuckpp{double ang;int x;}a[maxn];
double dis(fuck x,fuck y){return sqrt((x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y));}
double xl(fuck a,fuck b){
double ki=atan(fabs((b.y-a.y)/(b.x-a.x)));
if(b.y-a.y>){
if(b.x-a.x<)
ki=pi-ki;
}
else{
if(b.x<a.x) ki+=pi;
else ki=*pi-ki;
}
return ki;
}
bool comp(fuckpp x,fuckpp y){return x.ang<y.ang;}
int main(){
while(){
scanf("%d",&n);if(n==)break;
for(int i=;i<=n;i++)scanf("%lf %lf",&p[i].x,&p[i].y);
ans=;
for(int i=;i<=n;i++){
top=;
for(int j=;j<=n;j++){
if(i==j)continue;
double k=dis(p[i],p[j]);
if(k>2.0)continue;
double an=acos(k/2.0),ng=xl(p[i],p[j]);
a[++top].ang=ng-an;a[top].x=;
a[++top].ang=ng+an;a[top].x=-;
}
sort(a+,a+top+,comp);
int num=;
for(int i=;i<=top;i++){
num+=a[i].x;ans=max(ans,num);
}
}
printf("%d\n",ans);
}
return ;
}
bzoj1338: Pku1981 Circle and Points单位圆覆盖的更多相关文章
- poj1981 Circle and Points 单位圆覆盖问题
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Circle and Points Time Limit: 5000MS Me ...
- POJ-1981 Circle and Points 单位圆覆盖
题目链接:http://poj.org/problem?id=1981 容易想到直接枚举两个点,然后确定一个圆来枚举,算法复杂度O(n^3). 这题还有O(n^2*lg n)的算法.将每个点扩展为单位 ...
- poj1981Circle and Points(单位圆覆盖最多的点)
链接 O(n^3)的做法: 枚举任意两点为弦的圆,然后再枚举其它点是否在圆内. 用到了两个函数 atan2反正切函数,据说可以很好的避免一些特殊情况 #include <iostream> ...
- poj 1981 Circle and Points
Circle and Points Time Limit: 5000MS Memory Limit: 30000K Total Submissions: 8131 Accepted: 2899 ...
- poj1981 Circle and Points
地址:http://poj.org/problem?id=1981 题目: Circle and Points Time Limit: 5000MS Memory Limit: 30000K To ...
- poj 1981(单位圆覆盖最多点问题模板)
Circle and Points Time Limit: 5000MS Memory Limit: 30000K Total Submissions: 7327 Accepted: 2651 ...
- 【POJ 1981 】Circle and Points
当两个点距离小于直径时,由它们为弦确定的一个单位圆(虽然有两个圆,但是想一想知道只算一个就可以)来计算覆盖多少点. #include <cstdio> #include <cmath ...
- hdu 1077(单位圆覆盖问题)
Catching Fish Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- Codeforces 1036E Covered Points (线段覆盖的整点数)【计算几何】
<题目链接> <转载于 >>> > 题目大意: 在二维平面上给出n条不共线的线段(线段端点是整数),问这些线段总共覆盖到了多少个整数点. 解题分析: 用GC ...
随机推荐
- Ubuntu中Qt5.7.0无法输入中文
把libfcitxplatforminputcontextplugin.so复制到安装的Qt目录下的两个文件夹中 sudo apt install fcitx-frontend-qt5 sudo cp ...
- Freeplane中的自动边线颜色功能
今天我将电脑上的Freeplane从1.3.11升级到了1.5.18.发现新版本已经没有了1.3.11中的菜单选项Format → “Automatic edge color”.搜索了一下才发现,该功 ...
- IPython与notebook 安装
基于 python2.7.13 32-bit版本安装 1.安装pyreadline https://pypi.python.org/pypi/pyreadline 下载对应的32位版本 2.用pip安 ...
- mysql版本,根据经纬度定位排序sql
SELECT id,lng,lat,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((lat1*PI()/180-lat*PI()/180)/2),2)+COS(lat1*PI( ...
- ajax客户端请求与服务端响应浅谈
AJAX,即Asynchronous Javascript And XML,AJAX本质是在HTTP协议的基础上以异步的方式与服务器进行通信. 所谓的异步,是指某段程序执行不会阻塞其他程序执行,其表现 ...
- springmvc基础篇—掌握三种处理器
随着springmvc的广泛使用,关于它的很多实用有效的功能应该更多的被大家所熟知,下面就介绍一下springmvc的三种处理器: 一.BeanName处理器(默认) <?xml version ...
- Ecstore安装篇-1.运行系统环境要求
运行系统环境要求 运行系统环境要求 author :James,jimingsong@vip.qq.com since :2015-03-01 支持的操作系统 支持的WEB服务器 支持的浏览器 支持的 ...
- openvpn环境搭建
以下为服务端.客户端下载安装包,在CentOS 6.5部署,也可以找到相关下载源 openvpn-2.2.2.tar.gz,openvpn-2.1.3-install.rar,(https://git ...
- 防范XSS
.net framework4.5 提供了AntiXss类,来防范XSS攻击. 在开放指令的同时过滤危险字符串,使用AntiXss.GetSafeHtmlFragment(html)方法,具体可以参照 ...
- JQuery 模糊匹配
[属性名称] 匹配包含给定属性的元素 [att=value] 匹配包含给定属性的元素 [att*=value] 模糊匹配 [att!=value ...