hdu 3264(二分+圆相交面积)
题意:给出一些圆,选择其中一个圆的圆心为圆心,然后画一个大圆,要求大圆最少覆盖每个圆的一半面积。求最小面积。
解题思路:首先枚举每个圆,以其圆心作为大圆的圆心,然后再用二分去寻找最小的半径。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;const int maxn = 20;
const double eps = 1e-8;
const double pi = 3.14159265;
struct Circle
{double x,y,r;
}p[maxn];
int n; double dist(double x1,double y1,double x2,double y2)
{return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}double Area(double x0,double y0,double radius,Circle p)
{double d = dist(x0,y0,p.x,p.y);if(d >= radius + p.r) return 0;else if(d <= fabs(radius - p.r)) return min(radius,p.r) * min(radius,p.r) * pi;//计算两个角度double a = acos((radius * radius + d * d - p.r * p.r) / (2 * radius * d));double b = acos((p.r * p.r + d * d - radius * radius) / (2 * p.r * d));return radius * radius * a + p.r * p.r * b - radius * d * sin(a);
}bool Check(int k,double radius)
{for(int i = 1; i <= n; i++)if(Area(p[k].x,p[k].y,radius,p[i]) < p[i].r * p[i].r * pi / 2.0)return false;return true;
}int main()
{int t;scanf("%d",&t);while(t--){scanf("%d",&n);double l,r,mid,ans = 9999999.0;for(int i = 1; i <= n; i++)scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].r);for(int i = 1; i <= n; i++) //枚举圆心{l = 0, r = 500000;while(r - l > eps){mid = (l + r) / 2.0;if(Check(i,mid) == true){ans = min(ans,mid);r = mid;}else l = mid;}}printf("%.4f\n",ans);}return 0;
}
hdu 3264(二分+圆相交面积)相关推荐
- Square Card 计算几何-两圆相交面积
题意 : 给两个圆,分别代表得分区域和奖励区域,边长为a的正方形以均等概率扔到平面后绕中心旋转,保证一定会有某时刻正方形完全在得分区域内. 如果某时刻正方形完全落在区域内,获得相应分数,求正方形 既获 ...
- 求两圆相交面积(模板)
两圆相交分如下集中情况:相离.相切.相交.包含. 设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离.又因为两圆有大有小,我们设较小的圆是O1. 相离相切的面积为零,代码如下: dou ...
- HDU 4404 Worms(多边形和圆相交)
题意:略 思路:多边形与圆相交我记得好像是转化成圆与三角形相交,然后再求: 代码: #include <bits/stdc++.h> using namespace std;const i ...
- 求任意两圆相交的面积(不限程序设计语言版本)
无所谓程序设计语言,不过是表达形式不一罢了 题目来源 理论知识 参考知识: 代码实现 C# 鼠标悬停此处预览测试样例 Java 鼠标悬停于此预览测试样例 Kotlin C++ C Python Jav ...
- NYOJ 1186 心理阴影(两个圆环的相交面积)
心理阴影 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 自从shanghai reginal后,zkc学长的心理就有了阴影.什么不敢水题,不敢gj,不敢放松...(各种 ...
- 牛客网暑期ACM多校训练营(第三场) J Distance to Work 计算几何求圆与多边形相交面积模板...
链接:https://www.nowcoder.com/acm/contest/141/J 来源:牛客网 Eddy has graduated from college. Currently, he ...
- 平面上有两个圆相交,求两个圆相交部分的面积
平面上有两个圆相交,求两个圆相交部分的面积 又学习了一遍算法,感触颇深,也对算法有了更进一步的认识,记录一下这次的学习,希望能帮到有需要的人. 输入:六个参数:第一个圆的圆心坐标,半径,第二个圆的圆心 ...
- 两圆相交求面积 hdu5120
转载 两圆相交分如下集中情况:相离.相切.相交.包含. 设两圆圆心分别是O1和O2,半径分别是r1和r2,设d为两圆心距离.又因为两圆有大有小,我们设较小的圆是O1. 相离相切的面积为零,代码如下: ...
- 算法分析课设(一)平面上有两个圆相交,求两个圆相交部分的面积
写出算法的文字描述 第一步:输入两个圆的参数 x1. y1. r1. x2. y2. r2. 第二步:计算两圆的距离d,然后分以下四种情况判断: 1.相离或相切.若d>=(r1+r2),则 s= ...
最新文章
- Structured Streaming编程 Programming Guide
- JavaScript在发送ajax请求时,URL域名地址是使用绝对地址还是相对地址?什么是浏览器跨域访问操作,js如何实现?
- 用C++写的 Levenshtein 算法实现
- 四步解读python生成器
- BugKuCTF WEB 本地包含
- linux sz到指定的机器,linux 机器之间 zssh, rz, sz互相传输讲解
- VC++下使用ADO编写数据库程序 – 操作大全
- redis的内存优化【转】
- ————————————————————————动态规划——————————————————————1003——————————...
- java职称考试试题_SSM框架下的JAVA职称考试模拟系统
- 基于ping++第三方集成各类支付
- TYUT-A专题题解(二)
- Linux ALSA声卡驱动
- word参考文献的引用
- 5月地图软件影响力报告:百度谷歌搜狗居前三甲
- LeetCode刷题攻略
- LSTM调参经验(细读)
- R语言如何做独立样本t检验
- safari浏览网页打开速度很慢如何解决
- 6.在SAP Web上实现Punchout目录采购(第一部分)
热门文章
- 行业精英聚首谈智慧营销:团队打造、管理策略、权力分配、成功因素、IT 治理……...
- 混合云存储开启企业上云新路径--阿里云混合云备份容灾方案发布 1
- 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world...
- WAS6集群部署及初步测试
- Ivan D Jankovic PhD Studentship** Application
- what to do next?
- why wechat is not a good place for the learning, but csdn is
- <<温泉屋的小老板娘>>观后感
- 【转】汇编语言学习笔记一:CS和IP寄存器
- es6新语法Object.assign()