牛客练习赛41 E-球的体积并——————几何

牛客练习赛41:球的体积并【球缺】 题意: 求两个球的体积并 分析: 判断两球的位置关系: (1)相离:两球体积和 (2)内含:大球的体积 (3)相交:两球的体积和 - 相交部分的体积 球缺体积: 球冠(球缺的曲面外壳)表面积: h为球缺的高,r为球的半径(投影到平面上就是两圆相交,很容易求得h) 代码: #include <bits/stdc++.h> #define pi acos(... 阅读详情

链接:https://ac.nowcoder.com/acm/contest/373/E
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
Special Judge, 64bit IO Format: %lld
题目描述
某天lililalala正在玩一种奇妙的吃鸡游戏–因为在这个游戏里会同时有两个圆形安全区(他们可能相交)。
lililalala觉得求圆的面积并太简单了,所以想把这个问题升级一下。
现在在三维空间里有 2 个球形安全区,分别用四元组 &lt; x 1 , y 1 , z 1 , r 1 &gt; &lt;x1,y1,z1,r1&gt; <x1,y1,z1,r1>和 &lt; x 2 , y 2 , z 2 , r 2 &gt; &lt;x2,y2,z2,r2&gt; <x2,y2,z2,r2>表示,其中 r 1 、 r 2 r1、r2 r1、r2表示球半径, ( x 1 , y 1 , z 1 ) (x1,y1,z1) (x1,y1,z1)和 ( x 2 , y 2 , z 2 ) (x2,y2,z2) (x2,y2,z2)表示球心
lililalala想知道安全区的总体积是多少?即求这两个球的体积并。

输入描述:
输入有两行。
第一行四个实数 x 1 , y 1 , z 1 , r 1 x1,y1,z1,r1 x1,y1,z1,r1–第一个球的球心坐标和半径。
第二行四个实数 x 2 , y 2 , z 2 , r 2 x2,y2,z2,r2 x2,y2,z2,r2–第二个球的球心坐标和半径。
保证所有输入的坐标和半径的范围都在 [ − 100 , 100 ] [−100,100] [−100,100] 内。

输出描述:
输出一行一个实数–表示两个球的体积并,你的答案被认为正确,当且仅当绝对误差不超过10−6。
示例1
输入
0 0 0 1
2 0 0 1
输出
8.3775804
示例2
输入
0 0 0 1
0 0 0 0.5
输出
4.1887902


两个球不相交或者小球在大球内部的情况非常简单,结果就是球的体积
两球相交的时候,即 f a b s ( r 1 − r 2 ) &lt; d &lt; r 1 + r 2 fabs(r_1-r_2)&lt;d&lt;r_1+r_2 fabs(r1​−r2​)<d<r1​+r2​的情况
结果是两个球的体积减去它们球缺的体积就好了

球缺

  • 一个球被平面截下的一部分叫做球缺。
  • 截面叫做球缺的底面
  • 垂直于截面的直径被截后被截下的线段长叫做球缺的高。
  • 球缺曲面部分的面积(球冠面积) S = 2 π R h S=2πRh S=2πRh
  • 球缺体积公式 V = ( π / 3 ) ( 3 R − h ) ∗ h 2 = π h 2 ( R − h 3 ) V=(π/3)(3R-h)*h^2=\pi h^2(R-\frac{h}{3}) V=(π/3)(3R−h)∗h2=πh2(R−3h​)(R是球的半径,H是球缺的高)。

即
V = π h 2 ( R − h 3 ) \large V =\pi h^2(R-\frac{h}{3}) V=πh2(R−3h​)
如图所示,上边被切下来的部分就是球缺…我们需要知道它的体积
在这里插入图片描述

code

#include<bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);

struct Point{
        double x,y,z,r;
}a,b;

double dis(Point a,Point b)
{
        return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) + (a.z-b.z)*(a.z-b.z));
}
int main()
{
        // freopen("../in.txt","r",stdin);
        // freopen("../out.txt","w",stdout);
        cin>>a.x>>a.y>>a.z>>a.r;
        cin>>b.x>>b.y>>b.z>>b.r;
        double d = dis(a,b);
        double ans = 4.0*PI*(a.r*a.r*a.r+b.r*b.r*b.r)/3.0;
        if(d<=fabs(a.r-b.r))    ans = 4.0*PI*pow(a.r>b.r?a.r:b.r,3)/3.0;//小球在大球内
        else if(d<a.r+b.r){//两球相交,减去两个球缺的体积
                double cosq1 = (a.r*a.r + d*d - b.r*b.r)/(2.0*a.r*d); //对应的余弦角
                double cosq2 = (b.r*b.r + d*d - a.r*a.r)/(2.0*b.r*d);
                double h1 = a.r*(1-cosq1);//a球 球缺的高
                double h2 = b.r*(1-cosq2);//b球 球缺的高
                ans -= PI*h1*h1*(a.r-h1/3.0);//球缺体积公式
                ans -= PI*h2*h2*(b.r-h2/3.0);//减去b球的球缺部分
        }
        printf("%.7f\n",ans);
        return 0;
}

threekingdoms.txt中文三国演义下载及实现人物出场统计 threekingdoms.txt全文下载:https://python123.io/resources/pye/threekingdoms.txt CalThreeKingdomsV1.py: #CalThreeKingdomsV1.py import jieba txt = open("threekingdoms.txt", "r", encoding = "utf-8").read() words = jieba.lcut(txt) counts = {} for word in words: 阅读详情

相关推荐

Lattice CrosslinkNx LIFCL-40实战解析:MIPI D-PHY硬核IP配置与CSI-2数据解析全流程

本文详细解析了Lattice CrosslinkNx LIFCL-40 FPGA中MIPI D-PHY硬核IP的配置与CSI-2数据解析全流程。通过实战案例,介绍了硬件环境搭建、寄存器配置、数据包结构解析及视频流重构技巧,帮助开发者快速掌握高速图像采集系统的设计与优化方法。

weixin_29159613的博客 200

两球相交求体积并

链接:https://ac.nowcoder.com/acm/contest/373/E 来源:牛客网 题目描述 某天lililalala正在玩一种奇妙的吃鸡游戏--因为在这个游戏里会同时有两个圆形安全区(他们可能相交)。 lililalala觉得求圆的面积并太简单了,所以想把这个问题升级一下。 现在在三维空间里有 2 个球形安全区,分别用四元组 &lt;x1,y1,z1,r1&gt...

caowenbo2311694605的博客 3018

从选型到调试:MCU外部晶振电路设计的实战避坑指南

本文详细解析了MCU外部晶振电路设计的关键要点,从选型到调试提供全面指南。重点探讨了晶振频率选择、负载电容计算、PCB布局优化等核心问题,并分享常见故障排查技巧与EMC设计经验,帮助工程师规避设计陷阱,提升嵌入式系统时钟稳定性。

weixin_30872577的博客 278

牛客练习赛41 ABCDE题解

A.翻硬币问题 签到题,n!=m就No,我简单证明一下,如果n为奇数,每次翻转硬币,正面朝上的贡献都是偶数次,永远也不可能,如果n为偶数,那么我翻转一枚硬币,现有的正面朝上的数量是奇数,但是Alice每次翻转贡献是偶数次,所以也不可能。 #include&lt;bits/stdc++.h&gt; #define ll long long using namespace std; int ma...

ccsu_cat 398

MAX3232芯片引脚功能详解与外围电路设计避坑指南(从电荷泵到静电防护)

本文详细解析了MAX3232芯片的引脚功能与外围电路设计,重点介绍了其电荷泵架构和RS232通信接口的应用。通过实际案例和参数对比,提供了电路设计中的常见问题解决方案和静电防护建议,帮助工程师优化工业控制与嵌入式系统中的通信可靠性。

weixin_30596165的博客 434

FreeRTOS面试题汇总

如果一个低优先级的任务持有一个信号量,高优先级的任务想要用这个信号量,造成的死锁怎么解决。12.FreeRTOS的多任务之间如何去进行通信的,什么方法,它实现原理是什么。任务间数据传输一共有三种形式,用的最多的是消息队列,其次是全局变量和信号量。简历上写了了解RTOS,问了rtos的问题,用过哪些函数。讲解FreeRtos原理,调度机制,底层原理,代码调用。FreeRTOS,你的三个任务控制,请问你是怎么实现的。freertos中EventBits_t是干啥的?freertos使任务切换的方式有哪些?

weixin_45636780的博客 1万+

牛客练习赛41E.球的体积并

E.球的体积并 链接:https://ac.nowcoder.com/acm/contest/373/E 题解:先判断一下两个球不相交以及包含的关系,比较好考虑,然后就是两个球有交集的时候, 主要就是求两个弧面对应的高,可以设夹角,然后利用cos角的关系就是余玄定理表示对应的高,最后就是求相交的体积,得出结果。 #include&lt;iostream&gt; #include&lt;algori...

八百标兵奔北坡的博客 325

Krylov子空间与Arnoldi过程

一、应用背景 Krylov子空间方法是模型降阶(MOR)的一种,Krylov 子空间方法就是在Krylov子空间中寻找近似解。 二、Krylov子空间 n是原始矩阵的维度,m为降阶后矩阵的维度,通常m<<n。 三、Arnoldi 过程: 计算Km 的一组正交 对应上述MGS过程的python代码: import numpy as np def arnoldi_itera...

保持写作习惯,完成知识沉淀 6004

【牛客练习赛 41 B.666RPG】DP+滚动数组

B.666RPG 题意 有一个数字初值为0,n回合操作,每回合操作有两种,第一种操作将分数加上aia_iai​,第二种操作是将分数乘上-1.问有多少种操作方式在第n回合之后数字变为-666而且中间每一个回合之后分数都不是666。 1≤N≤3001 \leq N \leq 3001≤N≤300 −666≤ai≤666-666 \leq a_i \leq 666−666≤ai​≤666 做法 由于n...

lajiyuan的博客 402

反激电源占空比为何必须小于0.5?次谐波振荡与斜坡补偿详解

在开关电源设计中,峰值电流模式控制因其优异的动态响应和逐周期限流保护而被广泛应用。其工作原理是通过采样电感电流的峰值,与误差电压比较来控制开关管的导通与关断。然而,这种控制方式在反激等隔离拓扑中,当占空比超过50%时,会面临一个固有的稳定性挑战——次谐波振荡。这是由于电流扰动会在相邻开关周期内被放大而非衰减,导致系统在开关频率一半处发生振荡,严重影响输出纹波和可靠性。为解决这一问题,工程上引入了斜坡补偿技术,通过向控制信号叠加一个固定斜率的斜坡,改变环路增益条件,从而在宽输入电压或高占空比需求下维持系统稳定

weixin_29631169的博客 628

Mujoco xml actuator

在MuJoCo中,actuator(执行器) 是用于定义外部力或力矩的机制,这些力或力矩可以作用于关节、肌腱或身体。执行器可以模拟各种类型的驱动器,如电机、液压缸、肌肉等。它们通过定义传输(transmission)和力生成机制(force generation)来实现对模型的控制。

m0_52113469的博客 2911

牛客练习赛41 E 球并的体积【几何】

题目链接:https://ac.nowcoder.com/acm/contest/373/B; 了解几个公式,顺便自己记一下: 球的体积:v=4/3*r*r*r*PI; 球表面积:v=4*r*r*PI; 球冠:球被平面截下较小的一部分; 球冠表面积:S=2*PI*r*h (r是球的半径,h是球冠的高,即垂直于截面的直径被截后被截下的线段长) 球冠的体积:V=PI/3*h*h*(3*r-h)...

几许情愁的博客 187

Python爬虫:招聘网站岗位要求、薪资与求职者数据爬取与分析

通过本文的教程,我们学习了如何通过 Python 编写招聘数据爬虫,爬取招聘网站上的岗位要求、薪资和求职者数据,并通过数据存储、清洗、分析和可视化,获取有价值的信息。网站如智联招聘、猎云网、前程无忧等,都提供了大量的招聘信息,包括岗位要求、薪资范围、工作经验、学位要求、招聘公司等。本文将介绍如何通过 Python 编写爬虫,爬取招聘网站上的岗位要求、薪资、求职者数据,并通过数据存储、分析和可视化等手段,为求职者或招聘者提供实用的信息和决策支持。通过循环抓取多个页面的数据,可以获取不同岗位的信息。

2201_76125261的博客 723

牛客练习赛41 E.球的体积并(计算几何)

题目 给定x1,y1,z1,r1,x2,y2,z2,r2, 求(x1,y1,z1)为圆心,r1为半径的球 和(x2,y2,z2)为圆心,r2为半径的球的体积并 思路来源 https://blog.youkuaiyun.com/luyehao1/article/details/86583384 https://blog.youkuaiyun.com/enterprise_/article/details/816...

小衣同学的博客 555

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

牛客练习赛41-E-球的体积并(计算几何)

题目链接:https://ac.nowcoder.com/acm/contest/373/E 思路:分三种情况讨论两个球的关系: 两球/相离/外切,那么答案是 Va+Vb; 两球内含/内切时,答案是 max(Va,Vb); 两球相交时,我们可以认为相交部分就是两个球被平面所截的部分,我们称之为球冠Vc,答案是 Va+Vb-Vc。 #include&lt;cstdio&gt; #in...

sugarbliss 528

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

c语言求球的体积用const,牛客练习赛41 E.球的体积并(计算几何)

题目给定x1,y1,z1,r1,x2,y2,z2,r2,求(x1,y1,z1)为圆心,r1为半径的球和(x2,y2,z2)为圆心,r2为半径的球的体积并思路来源https://blog.youkuaiyun.com/luyehao1/article/details/86583384https://blog.youkuaiyun.com/enterprise_/article/details/81624174https:/...

weixin_28943105的博客 420

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【牛客练习赛41 E.球的体积并】球的体积并模板

E.球的体积并 题意 求两个球的体积并 做法 用球缺公式+计算几何模板即可解决。 球缺公式为:V=πh2(3r−h)3V=\frac{\pi h^2\left( 3r-h \right)}{3}V=3πh2(3r−h)​ 其中rrr是球的半径,hhh是球缺的高。 代码 #include&lt;stdio.h&gt; #include&lt;iostream&gt; #include&lt;alg...

lajiyuan的博客 320

【球体相交体积模板】牛客练习赛41 B 球的体积并

牛客练习赛41 B球的体积并 链接:https://ac.nowcoder.com/acm/contest/373/E 来源:牛客网 题目描述 某天lililalala正在玩一种奇妙的吃鸡游戏--因为在这个游戏里会同时有两个圆形安全区(他们可能相交)。 lililalala觉得求圆的面积并太简单了,所以想把这个问题升级一下。 现在在三维空间里有 2 个球形安全区,分别用四元组 &...

qq_41037114的博客 381

牛客练习赛41 球的体积并

链接:https://ac.nowcoder.com/acm/contest/373/E 来源:牛客网 题目描述 某天lililalala正在玩一种奇妙的吃鸡游戏--因为在这个游戏里会同时有两个圆形安全区(他们可能相交)。 lililalala觉得求圆的面积并太简单了,所以想把这个问题升级一下。 现在在三维空间里有 2 个球形安全区,分别用四元组 &lt;x1,y1,z1,r1&gt...

YOONGI 249

牛客练习赛41 E 球的体积并

两个球的体积相加减去交就是并 #include &lt;bits/stdc++.h&gt; using namespace std; typedef long long LL; const int maxn=1e5+5; const int maxm=5e5+5; const int inf=0x3f3f3f3f; #define PI acos(-1.0) typedef str...

c3po 187

牛客练习赛41E(球的体积并)

球冠公式是\(\frac{\pi h^2(3R-h)}{3}\),这样再余弦公式用\(R_a\)和\(R_b\)导一导两个球冠的\(h\)就做完了。算是补了个camp时没做出来的小坑了。 #include <bits/stdc++.h> using namespace std; typedef double db; const db eps = 1e-8; const db...

123

牛客练习赛41

题目链接:牛客练习赛41 官方题解:题解 A题 解题思路:考虑m,n相等或者m为1时一定能完全成功翻转,其他情况例如m=n-1或m=n-2均无法成功,交了一发,1A。 AC代码: #include &lt;bits/stdc++.h&gt; using namespace std; int main() { int T,n,m; cin &gt;&gt; T; whi...

小胡同的诗 288

立体几何——球缺问题

(牛客练习赛41)球的体积并 #include &lt;bits/stdc++.h&gt; using namespace std; typedef long long ll; const double PI = acos(-1); const int MAX = 100 + 10; const int inf = 1e9 + 7; typedef struct point { do...

qq_42825221的博客 670

牛客练习赛41 A B C D E

传送门:https://ac.nowcoder.com/acm/contest/373#question A. 翻硬币问题 题解:很明显如果不能一次拿走,那么BobBobBob总是能翻转其中一枚硬币来破坏nnn与mmm的奇偶性。 代码 #include&lt;bits/stdc++.h&gt; #define DEBUG(x) std::cerr &lt;&lt; #x &lt;&lt; '=...

Eternally831143的博客 536

球的体积并

牛客练习赛41E 计算几何模板,两个球的面积再减去两个球交集的面积 1 #include<cstdio> 2 #include<cmath> 3 const double Pi=acos(-1.0); 4 int main() 5 { 6 double x1,y1,z1,r1,x2,y2,z2,r2; 7 scanf("...

weixin_30672295的博客 85

【牛客练习赛41】 A.B.C.D.E

A.翻硬币问题 题意 n个硬币朝向正面,Alice每次选m枚反过来,bob可以在某次Alice操作之后反转一枚硬币,问最终Alice是否能赢。m为偶数。 做法 只要第一轮Alice赢不了,Bob就可以控制比赛的输赢。 代码 #include&lt;stdio.h&gt; int main() { int t; scanf("%d",&amp;t); while(t--) ...

lajiyuan的博客 554
上一篇: 洛谷P1040 加分二叉树——————简单区间DP
下一篇: 校赛总结——————自闭的一天
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值