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]内随意 ...
随机推荐
- LeetCode——Contains Duplicate II
Description: Given an array of integers and an integer k, find out whether there there are two disti ...
- su命令cannot set groups: Operation not permitted的解决方法
版权声明:本文由曾倩倩原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/103 来源:腾云阁 https://www.qclo ...
- JZOJ.5328【NOIP2017模拟8.22】世界线
Description
- struts2 中redirectAction如何传递参数!
在struts2中,初学者因为参数传递的问题往往会出现一些错误. 比如页面跳转的问题,在用户注册中,以一下代码作为案例: <struts> <constant name=" ...
- java8新增的日期时间包
Clock clock=Clock.systemUTC(); System.out.println("当前时刻为:"+clock.instant()); System.out.pr ...
- Yii 各种url地址写法
echo Url::home(); 生成入口地址/yii2test/frontend/web/index.php: echo Url::base();生成入口文件夹地址:/yii2test/fron ...
- talib 中文文档(三):talib 方法大全
Function API Examples Similar to TA-Lib, the function interface provides a lightweight wrapper of th ...
- Mongo副本集的配置以及php node.js连接使用副本集
最近弄了下mongodb的副本集, 首先说下没有认证情况的副本集,相对比较简单,因为环境有限,我在同一台服务器上做了模拟. --rest参数是打开web监控页面,比如我们这里监听37017端口,则打开 ...
- Drainage Ditches---hdu1532(最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532 题意: 每次下雨的时候,农场主John的农场里就会形成一个池塘,这样就会淹没其中一小块土地,在这 ...
- rpc、socket、mq
关于RPC与MQ异同的理解 相同:1.都利于大型系统的解耦:2.都提供子系统之间的交互,特别是异构子系统(如java\node等不同开发语言):不同:1.RPC侧重功能调用,因此多半是同步的:备注:也 ...