HDU 6354 Everything Has Changed(余弦定理)多校题解
题意:源点处有个圆,然后给你m个圆(保证互不相交、内含),如果源点圆和这些原相交了,就剪掉相交的部分,问你最后周长(最外面那部分的长度)。
思路:分类讨论,只有内切和相交会变化周长,然后乱搞就行了。题目好像不用讨论给的圆包含源点圆的情况(0?),那么只剩内含(不变)、相切(增加小圆周长)、相离(不变)、相交(余弦定理求一下)。余弦定理都快忘了,本来打算构建rt三角形233。学到一招pi = acos(-1.0)。
代码:
#include<cstdio>
#include<set>
#include<map>
#include<cmath>
#include<stack>
#include<vector>
#include<queue>
#include<cstring>
#include<string>
#include<sstream>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = +;
const int INF = 0x3f3f3f3f;
double dis(double x1,double y1){
return sqrt(x1 * x1 + y1 * y1);
}
int main(){
int T;
double pi = acos(-1.0);
char n[];
scanf("%d",&T);
while(T--){
double ans;
double R;
int m;
scanf("%d%lf",&m,&R);
ans = * R * pi;
while(m--){
double x,y,r;
scanf("%lf%lf%lf",&x,&y,&r);
double dist = dis(x,y);
if(dist + r == R){
ans += * r * pi;
}
else if(dist >= r + R || dist + r < R){
continue;
}
else{
double del = acos((R * R + dist * dist - r * r) / ( * dist * R));
double si = acos((r * r + dist * dist - R * R) / ( * dist * r));
ans = ans - del * R * + si * r * ;
}
}
printf("%lf\n",ans);
}
return ;
}
HDU 6354 Everything Has Changed(余弦定理)多校题解的更多相关文章
- HDU 6354.Everything Has Changed-简单的计算几何、相交相切圆弧的周长 (2018 Multi-University Training Contest 5 1005)
6354.Everything Has Changed 就是计算圆弧的周长,总周长=大圆周长+相交(相切)部分的小圆的弧长-覆盖掉的大圆的弧长. 相交部分小圆的弧长直接求出来对应的角就可以,余弦公式, ...
- hdu 5294 Tricks Device(2015多校第一场第7题)最大流+最短路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5294 题意:给你n个墓室,m条路径,一个人在1号墓室(起点),另一个人在n号墓室(终点),起点的那 ...
- hdu 5319 Painter(杭电多校赛第三场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5319 Painter Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 5326 Work(杭电多校赛第三场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5326 Work Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU 4691 Front compression (2013多校9 1006题 后缀数组)
Front compression Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Othe ...
- HDU 4679 Terrorist’s destroy (2013多校8 1004题 树形DP)
Terrorist’s destroy Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Othe ...
- HDU 4671 Backup Plan (2013多校7 1006题 构造)
Backup Plan Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total ...
- HDU 4667 Building Fence(2013多校7 1002题 计算几何,凸包,圆和三角形)
Building Fence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)To ...
- HDU 5361 In Touch (2015 多校6 1009 最短路 + 区间更新)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5361 题意:最短路.求源点到全部点的最短距离.但与普通最短路不同的是,给出的边是某点到区间[l,r]内随意 ...
随机推荐
- Python class的属性访问控制和内建函数重写实现高级功能以及@property
一.类属性的访问控制 Python Class确实是博大精深,我们还是来温习一下属性的访问控制作为开(fu)场(xi). 首先_varname是可以访问的,__varname是不能直接访问(原理是__ ...
- 170508、忘记jenkins密码或者修改jenkins密码
刚配置好jenkins时,不知道密码是什么,很多同学都有这种烦恼把,各种抓狂. 操作步骤: 1.进入jenkins用户目录 cd /home/rick/.jenkins/users/admin ps ...
- yii2中的别名路径,@webroot , @web
定义在yii\web\Application 的bootstrap中, Yii::setAlias('@webroot', dirname($request->getScriptFile())) ...
- HOJ Recoup Traveling Expenses(最长递减子序列变形)
A person wants to travel around some places. The welfare in his company can cover some of the airfar ...
- Allocation Sinking Optimization
LuaJIT Sponsorship Program http://luajit.org/sponsors.html Sponsorship for allocation/store sinking ...
- Python开发【数据结构】:排序练习
排序练习 问题一: 现在有一个列表,列表中的数范围都在0到100之间,列表长度大约为100万.设计算法在O(n)时间复杂度内将列表进行排序. import random data = [random. ...
- 以太坊api访问,区块同步监测
以太坊geth api访问,区块同步监测 curl查询geth区块高度 supervisor管理以太坊geth进程 geth进程健康检查 # curl访问geth api #使用curl访问geth ...
- 【我的Android进阶之旅】解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符
1.问题描述 最近在负责公司基础业务和移动基础设施的开发工作,正在负责Lint代码静态检查工作.因此编写了自定义的Lint规则,在调试过程中,编译的时候出现了如下所示的错误: 部分输出日志如下所示: ...
- Spring源码解析(二)BeanDefinition的Resource定位
IOC容器的初始化过程主要包括BeanDefinition的Resource定位.载入和注册.在实际项目中我们基本上操作的都是ApplicationContex的实现,我们比较熟悉的ClassPath ...
- [.Net]System.OutOfMemoryException异常
1. 一个异常情景 加载15000条等高线,平均每条线有400个点到三维球上,等待时间太长.而且可能会报内存异常. 2. 不错的分析 http://wenku.baidu.com/view/14471 ...