Intersection(HDU5120 + 圆交面积)
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5120
题目:


题意:
求两个圆环相交的面积。
思路:
两个大圆面积交-2×大圆与小圆面积交+两小圆面积交。
代码实现如下:
#include <set>
#include <map>
#include <deque>
#include <ctime>
#include <stack>
#include <cmath>
#include <queue>
#include <string>
#include <cstdio>
#include <vector>
#include <iomanip>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long LL;
typedef pair<LL, LL> pll;
typedef pair<LL, int> pli;
typedef pair<int, int> pii;
typedef unsigned long long uLL; #define lson rt<<1
#define rson rt<<1|1
#define name2str(name)(#name)
#define bug printf("**********\n");
#define IO ios::sync_with_stdio(false);
#define debug(x) cout<<#x<<"=["<<x<<"]"<<endl;
#define FIN freopen("/home/dillonh/CLionProjects/in.txt","r",stdin); const double eps = 1e-;
const int maxn = 1e5 + ;
const int inf = 0x3f3f3f3f;
const double pi = acos(-1.0);
const LL INF = 0x3f3f3f3f3f3f3f3fLL; int t, r, R;
int x1, x2, yy, y2; double cirinter(int x1,int y1,int r1,int x2,int y2,int r2)//圆交面积公式
{
double d,s,t,a1,a2,s1,s2,s3;
if(r1<r2) swap(r1, r2);
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); //两圆心距离
if(d>=r1+r2)return ; //两圆相离
else if(d<=(r1-r2)) //两圆内含
s=pi*r2*r2;
else { //两圆相交
a1=acos((r1*r1+d*d-r2*r2)/(*r1*d));//大圆中扇形圆心角的一半
a2=acos((r2*r2+d*d-r1*r1)/(*r2*d));//小圆中扇形圆心角的一半
s1=a1*r1*r1;//大圆中的那个扇形面积
s2=a2*r2*r2;//小圆中的那个扇形面积
s3=r1*sin(a1)*d;//两圆心与两交点组成的四边形面积
s=s1+s2-s3;//圆交面积
}
return s;
} int main() {
#ifndef ONLINE_JUDGE
FIN;
#endif
scanf("%d", &t);
int icase = ;
while(t--) {
scanf("%d%d", &r, &R);
scanf("%d%d%d%d", &x1, &yy, &x2, &y2);
double ans = cirinter(x1, yy, R, x2, y2, R) - * cirinter(x1, yy, R, x2, y2, r) + cirinter(x1, yy, r, x2, y2, r);
printf("Case #%d: %.6f\n", ++icase, ans);
}
return ;
}
Intersection(HDU5120 + 圆交面积)的更多相关文章
- Open-air shopping malls(二分半径,两元交面积)
http://acm.hdu.edu.cn/showproblem.php?pid=3264 Open-air shopping malls Time Limit: 2000/1000 MS (Jav ...
- HDU 5130 Signal Interference --计算几何,多边形与圆的交面积
题意: 求所有满足PB <= k*PA 的P所在区域与多边形的交面积. 解法: 2014广州赛区的银牌题,当时竟然没发现是圆,然后就没做出来,然后就gg了. 圆的一般式方程: 设A(x1,y1) ...
- 计算几何(容斥原理,圆交):HDU 5120 Intersection
Matt is a big fan of logo design. Recently he falls in love with logo made up by rings. The followin ...
- hdu 2892 area (圆与多边形交面积)
Problem - 2892 这道题的做法是以圆心为原点,对多边形进行三角剖分.题目描述中,多边形的可能是顺时针或者是逆时针给出,不过在我的做法里,是用有向面积来计算的,和常见的多边形面积的求法类似, ...
- HDU 3467 Song of the Siren(圆交)
Problem Description In the unimaginable popular DotA game, a hero Naga Siren, also known as Slithice ...
- 【BZOJ2178】圆的面积并(辛普森积分)
[BZOJ2178]圆的面积并(辛普森积分) 题面 BZOJ 权限题 题解 把\(f(x)\)设为\(x\)和所有圆交的线段的并的和. 然后直接上自适应辛普森积分. 我精度死活一个点过不去,不要在意我 ...
- poj 2546(两圆公共面积)
Circular Area Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5682 Accepted: 2225 Des ...
- hdu4063(圆与圆交+线段与圆交+最短路)
写几何题总是提心吊胆.精度问题真心吓人. 其实思路挺简单的一道题,真是什么算法和几何double搞到一块,心里就虚虚的. 思路:求出所有圆之间的交点,然后用这些交点跑一遍最短路就可以了. Aircra ...
- SPOJ CIRU SPOJ VCIRCLE 圆的面积并问题
SPOJ VCIRCLE SPOJ CIRU 两道题都是给出若干圆 就面积并,数据规模和精度要求不同. 求圆面积并有两种常见的方法,一种是Simpson积分,另一种是几何法. 在这里给出几何方法. P ...
随机推荐
- js获取窗口滚动条高度、窗口可视范围高度、文档实际内容高度、滚动条离浏览器底部的高度
1.获取窗口可视范围的高度 //获取窗口可视范围的高度 function getClientHeight(){ var clientHeight=0; if(document.body.clientH ...
- Vue数据绑定和响应式原理
Vue数据绑定和响应式原理 当实例化一个Vue构造函数,会执行 Vue 的 init 方法,在 init 方法中主要执行三部分内容,一是初始化环境变量,而是处理 Vue 组件数据,三是解析挂载组件.以 ...
- 大家好,请问在DELPHI中#13和#10是表示什么含义的?
#13: 表示"回车"#10: 表示"换行" ASCII码 Delphi字符 C程序 含义------- ---------- ----- ------ ...
- 多realm以及jdbcRealm配置
多realm配置 public class MyRealm1 implements Realm { public String getName() { return "myrealm1&qu ...
- logstash收集MySQL慢查询日志
#此处以收集mysql慢查询日志为准,根据文件名不同添加不同的字段值input { file { path => "/data/order-slave-slow.log" t ...
- Cornfields POJ - 2019(二维RMQ板题)
就是求子矩阵中最大值与最小值的差... 板子都套不对的人.... #include <iostream> #include <cstdio> #include <sstr ...
- Day21-自定义分页
一. 先简单来个示例 1.1 在urls.py中增加1条,user_list from django.conf.urls import url,include from django.contrib ...
- 洛谷 P3723 [AH2017/HNOI2017]礼物 解题报告
P3723 [AH2017/HNOI2017]礼物 题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一个送给她.每个手环上各有 \(n\) 个 ...
- C++11新利器
C++11常用特性的使用经验总结 unordered_map可能用的会比较多 省的写哈希表了. 但是浪费空间
- [CEOI2004]锯木厂选址
link 试题分析 做这种题就应该去先写个暴力代码 #include<iostream> #include<cstring> #include<cstdio> #i ...