博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[zoj]3575 Under Attack III
阅读量:5116 次
发布时间:2019-06-13

本文共 1280 字,大约阅读时间需要 4 分钟。

题目大意:

给出一个椭圆和平面上的一些点,求椭圆最多覆盖的点数。其中椭圆长短轴方向固定不可旋转。

思路:

首先将图的横纵坐标乘上一定系数使椭圆覆盖问题变为圆覆盖问题。可以很容易地证明,一定存在一个最优解使得圆周上存在两个或两个以上地点。

由于圆的半径一定,所以枚举圆周上的两个点,可算出圆的位置(可能有两个不同的圆),再求出覆盖点数并取最优解。

#include 
#include "stdlib.h"#include "math.h"double dis(double x1,double y1,double x2,double y2){ return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));}long try(double p[210][2],long n,double xo,double yo,double r){ double d; long i,re; re=0; for (i=0;i
a) continue; xp=sqrt(r*r-d*d/4); an=atan((p[j][1]-p[i][1])/(p[j][0]-p[i][0]))-pi; yp=xp*sin(an); xp=xp*cos(an); xo=(p[i][0]+p[j][0])/2; yo=(p[i][1]+p[j][1])/2; te=try(p,n,xo+xp,yo+yp,r); if (te>max) max=te; te=try(p,n,xo-xp,yo-yp,r); if (te>max) max=te; } } if (max==0) max=1; printf("%ld\n",max); } return 0;}

 

转载于:https://www.cnblogs.com/USTC-ACM/archive/2012/02/28/2371497.html

你可能感兴趣的文章
WPF自学入门(十一)WPF MVVM模式Command命令
查看>>
Oracle篇 之 子查询
查看>>
zzuli 1907: 小火山的宝藏收益
查看>>
nodejs 中的一些方法
查看>>
R_Studio读取xls文件
查看>>
oralce中的dual详解 转 http://blog.sina.com.cn/s/blog_a5a24bcb0100zeay.html
查看>>
hdu 1181 变形课
查看>>
第三章软件工程基础
查看>>
文件描述符、文件表项指针、inode节点的关系
查看>>
新手必看的jQuery优化笔记十则
查看>>
博客园何时会被简书们超越
查看>>
Python模拟登录练习
查看>>
【线段树分治 01背包】loj#6515. 「雅礼集训 2018 Day10」贪玩蓝月
查看>>
Error accessing PRODUCT_USER_PROFILE
查看>>
Spring mvc 特殊字段的注入
查看>>
JS动画代码
查看>>
泥泞的道路
查看>>
简单爬虫
查看>>
Swift - UIDatePicker
查看>>
近期计划
查看>>