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 ...
随机推荐
- 50道java线程面试题
50道Java线程面试题 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序 ...
- cache数据库学习周结
学习cache数据库只有两周,下面说一下对这一数据库的理解吧.不一定对 cache数据库最大的特点是global: global就像全区变量一样,是一个广义的全局变量.数据库表中的一些重要的字段名以字 ...
- LR日志解析
在录制和回放的时候,VU会分别把发生的事件记录成日志文件,这些日志有利于我们跟踪VU和服务器的交互过程. 1.回放日志(Replay log) 脚本回放运行时的输出都记在这个log里. "输 ...
- Nuget 学习二
打包自己的类库 准备工作: 1)nuget 账号: https://www.nuget.org/ 2)nuget 包管理器 点击下载:NuGetPackageExplorer,安装完应该是酱紫. 开始 ...
- subsequence/subsets/subarray/substring problems
128. Longest Consecutive Sequence hashmap, int up = nums[i], int down, int max 注:访问过的要erase 152. Max ...
- Linux网络管理常用命令:net-tools VS iproute2
Exported from workflowy! net-tools ifconfigifconfig命令:用于接口及地址查看和管理 route netstat arp iproute2 ip lin ...
- android studio 导入外部库文件,以及将项目中module变成library引用依赖
一:导入如百度地图等的外部类. 步骤:1.首先 将androidstudio项目显示切换到 project 状态显示项目 2.然后添加.jar文件,将所有的.jar文件放入libs文件夹内(libs文 ...
- android平台短视频技术之 视频编辑的经验分享.
android平台短视频技术之 视频编辑的经验分享. 提示一: 各位看官,这里分享的是视频编辑,即剪切/拼接/分离/合并/涂鸦/标记/叠加/滤镜等对视频的编辑操作.不是流媒体网络播放等功能,请注意. ...
- html和html5学习
html和html5学习 chorme.safari中的input或textarea html超链接(a)详细讲解 html5新增及删除标签 html表格 图片加alt属性 input的type属性 ...
- canvas烟花-娱乐
网上看到一个释放烟花的canvas案例,很好看哦. 新建文本,把下面代码复制进去,后缀名改为html,用浏览器打开即可. 看懂注释后,可以自己修改烟花的各个效果.我试过让烟花炸成了心型.:-) < ...