ZOJ 3058 Circle and Ring【圆与环相交面积】【圆与圆相交面积模板】

[模板] 求两圆相交面积(模板) 两圆相交分三种情况:相离相切相交 阅读详情

Circle and Ring

Time Limit: 1 Second      Memory Limit: 32768 KB

Given a circle and a ring, your task is to calculate the area of their intersection.

Input

This problem contains multiple test cases, process to the end of file.

For each case, there are two lines. The first line contains three real numbers x', y' and r' (0 <= r' <= 1024) representing the circle. The second line contains four real numbers x, y, r and R (0 <= r <= R <= 1024) representing the ring.

Output

For each case, output the area with the accuracy of three digits after decimal point in a signal line.

Never output "-0.000"!

Sample Input

10 0 20
-10 0 10 20
20 30 15
40 30 0 30

Sample Output

351.041
608.366

Author: WU, Zejun
Source: ZOJ Monthly, November 2008

题意:给出一个圆的圆心坐标和半径,以及一个圆环的坐标和内外圆的半径,求这个圆和圆环的相交面积。

经分析可得,一共有如下几种情况:

通过计算可得出:

圆和圆环的相交面积 = 圆和圆环中大圆的相交面积 - 圆和圆环中小圆的相交面积。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
const int maxn = 100010;
const double pi = acos(-1.0);

struct point {
	double x, y;
};

double x1, y11, r1, x2, y2, r2, R2;

double D(point a, point b)	//两点间距离
{
	return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y));
}

double calc(point a, double r1, point b, double r2)	//计算面积
{
	double d = D(a, b);
	double cosaa = (r1*r1 + d*d - r2*r2) / (2 * r1*d);
	double cosa = acos(cosaa);
	double l = r1*cosa * 2;
	double s = l*r1 / 2;
	double s2 = r1*r1*sin(cosa)*cos(cosa);
	return s - s2;
}

bool ainb(point a, double r1, point b, double r2)	//判断a是否在b中
{
	double d = D(a, b);
	if (d <= r2 - r1) return 1;
	return 0;
}

bool ainstb(point a, double r1, point b, double r2)	//判断a和b是否有相交的区域
{
	double d = D(a, b);
	if (d >= fabs(r1 - r2) && d <= r1 + r2)
		return 1;
	return 0;
}

double S(point a, double r1, point b, double r2)	//计算相交面积
{
	if (ainb(a, r1, b, r2))
		return pi*r1*r1;
	if (ainb(b, r2, a, r1))
		return pi*r2*r2;
	if (!ainstb(a, r1, b, r2)) return 0;
	return calc(a, r1, b, r2) + calc(b, r2, a, r1);
}



int main()
{
	point a, b;
	double r1, r2, r3;
	while (~scanf("%lf%lf%lf", &a.x, &a.y, &r1))
	{
		scanf("%lf%lf%lf%lf", &b.x, &b.y, &r2, &r3);
		printf("%.3f\n", S(a, r1, b, r3) - S(a, r1, b, r2));
	}
	return 0;
}




常用圆公式算法集合 ACM编程竞赛几何摸板 立即下载

相关推荐

miniDP与DP管脚定义差异详解及设计避坑指南

本文详细解析了Mini DisplayPort与标准DisplayPort接口在管脚定义上的核心差异,通过对比表格直观展示了两者20针脚的不同排列方式,特别是高速差分信号线的分布。文章结合真实设计案例,为硬件工程师提供了从原理图设计、PCB布局到信号完整性考量及故障排查的完整避坑指南,强调绝不能将两者视为简单的物理缩小版。

weixin_29248653的博客 362

两圆相交求面积

两圆相交求面积,考虑两圆的位置关系再计算其面积: (因为是计算面积,不考虑两圆相切的情况) 1.两圆相离: 判定条件:两圆半径之和大于等于圆心距 计算方法:显然相交面积为0 2.两圆相含:两圆半径之差小于等于圆心距 计算方法:显然相交面积为较小圆的面积 3.两圆相交:以上两种情况以外 计算方法: 用余弦定理得三角形圆心处的角度,然后计算两个扇形的面积,再减去三角形的面积,

AngelBeats! 1万+

java爬虫(爬取银行理财数据)

import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; imp

ROCK 2490

hdu 1798 Tell me the area(相交圆的面积)

相交圆的面积模板 纯数学知识,S1,S2是两个扇形的面积,S3是矩形的面积, a1,a2是两个角,用来求扇形面积 q是周长的一半,用来求矩形面积 #include #include #include #include using namespace std; struct circle { double x,y,r; }; int main() { circle

Jeromiewn的博客 850

滑模控制理论(SMC)概述

滑模控制理论(SMC)概述一、背景二、数学理论三、高维拓展四、分析 一、背景 滑模控制理论(Sliding Mode Control, SMC)是一种建立在现代控制理论基础上的控制理论,主要数学核心为李雅普诺夫函数。 滑模控制的核心思想是建立一个滑模面,将被控系统拉取到滑模面上来,使系统沿着滑模面运动。滑模控制的一个优势是无视外部扰动和不确定参数,采用一种比较“暴力”的方式达到控制的目的。 其思想和反步法有些类似,但数学实现起来更加方便而不抽象。相比反步法,滑模控制没有复杂的数学计算,也不会出现“微分爆炸”

高能阿博特的博客 6万+

TC3xx芯片中断配置避坑指南:从AUTOSAR Davinci配置到SRN地址计算的完整流程

本文详细解析了英飞凌TC3xx芯片的中断配置流程,从AUTOSAR Davinci工具链到硬件调试的全链路指南。重点介绍了中断路由(IR)模块、服务请求节点(SRN)和中断控制单元(ICU)的配置技巧,帮助开发者避开常见陷阱,优化中断性能。

weixin_30628801的博客 412

计算几何专题(计算两圆相交面积)

There are two circles in the plane (shown in the below picture), there is a common area between the two circles. The problem is easy that you just tell me the common area. Input There are many cases.

老街# 4189

FinRL实战:5步搞定股票量化交易策略(附Python代码)

本文详细介绍了如何使用FinRL框架,通过5个步骤构建基于深度强化学习的股票量化交易策略。内容涵盖从环境搭建、数据获取与预处理,到交易环境构建、模型训练(如PPO算法),以及策略回测评估与优化的完整流程,并提供了可运行的Python代码示例,帮助读者快速入门AI驱动的量化交易。

weixin_29062865的博客 626

HDU5120 Intersection 【求圆的面积交】

Intersection Time Limit: 4000/4000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 41    Accepted Submission(s): 22 Problem Description Matt is a big f

长风的专栏 2257

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6334

VS2019手动添加bits/stdc++.h全指南(附解决‘无法打开源文件‘错误)

本文详细介绍了在Visual Studio 2019中手动配置C++万能头文件bits/stdc++.h的完整方法,解决常见的'无法打开源文件'错误。通过分析GCC与MSVC编译器生态差异,提供了纯手动创建和MinGW移植两种可靠方案,并给出详细的步骤、常见错误排查及最佳实践建议,帮助开发者高效配置竞赛开发环境。

weixin_29011395的博客 547

求两个相交圆的交点的公式

半径为R的圆心为A,坐标为(x,y)  半径为S的圆心为B,坐标为(a,b)  两圆交点为C,D   AB与CD的交点为E,坐标为(X0,Y0)  过C点垂线与过E点水平线交点为F   令L为AB长度,K1为线AB的斜率,K2为线CD的斜率   则L=√[(a-x)²+(b-y)²]   K1=(b-y)/(a-x)   K2=-1/K1   CE²=R²-AE²    CE²=S²-EB²=S

LY-C的博客 2万+

华为OD机考双机位C卷 - 构成正方形的数量 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 成正方形的数量 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 5938

ZOJ 3058 The War(简单贪心)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4351 题目大意:有N个士兵,每个士兵所能拿动的武器为【minWi, maxWi】,为了能打胜战,要尽可能多的拿到武器。问你如何能拿到更多。 其实这题和那个活动时间安排极其相似。比较简单,排序就好了。#include #include #include #i

笨小孩的专栏 931

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

三个圆的相交面积

http://acm.hzau.edu.cn/problem.php?id=1003 #include #include #include #include using namespace std; void solve() { double d, r; cin >> d >> r; double ans = 0; if (d < r) { double a =

梦醒了 4952

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算两个圆相交部分的面积

double intersect(double x1,double y1,double r1,double x2,double y2,double r2){ double s,temp,p,l,ans; l=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); if(l>=r1+r2) ans=0; else if(l<=abs(r1-r2)){ if(r1<=

humantic的专栏 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HDU 1798 Tell me the area(计算几何,求相交圆面积)

题目地址 http://acm.hdu.edu.cn/showproblem.php?pid=1798 Tell me the area Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2133    Accepted S

ACMan 1150

HDU 5120 Intersection 圆相交 (圆的各类模板)

Time Limit: 4000/4000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 1791    Accepted Submission(s): 686   Problem Description Matt is a big fan of logo design....

深海沧澜的博客 508

求两个相交圆的面积的模板

#include #include using namespace std; #define pi acos(-1.0) typedef struct node { int x; int y; }point; double AREA(point a, double r1, point b, double r2) {

跟随内心的渴望 1456

hdu acm 5120 Intersection(圆交)

Time Limit: 4000/4000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Submission(s): 1791    Accepted Submission(s): 686 Problem Description Matt is a big fan of logo desi

人生如梦,浮华一瞬间的专栏 1246

HDU2892 求多边形与圆相交面积

传送门:HDU2892areaTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1023    Accepted Submission(s): 407Problem Description小白最近被空军特招为飞行员,参与一项实战演习。演习的内...

勇敢前进的ACMer 1254

几何学中关于相交圆的这个定理,你还记得吗?

一键关注

数据与算法之美 821

POJ 2546 Circular Area(两个圆相交的面积)

题目链接 题意 : 给你两个圆的半径和圆心,让你求两个圆相交的面积大小。 思路 : 分三种情况讨论 假设半径小的圆为c1,半径大的圆为c2。 c1的半径r1,圆心坐标(x1,y1)。c2的半径r2,圆心坐标(x2,y2)。 d为两圆圆心连线的长度。 相交面积为S d=sqrt((x1-x2)^2+(y1-y2)^2) (1)如果r1+r2<=d 那么两圆相离,相交面积S...

weixin_30588675的博客 339
上一篇: HDU 4442 Physical Examination【水题】【思维题】
下一篇: 2017"百度之星"程序设计大赛 - 初赛(A)1006——HDU 6113
Archger
博客等级 码龄10年 79粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值