牛客练习赛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;
}

Abaqus滞回问题求解—浆锚连接装配式剪力墙滞回模拟 当下土木工程研究生,多数都在从事装配式混凝土构件安全或装配式混凝土构件连接节点力学性能的研究。研究这类问题,几乎脱离不开对有限元软件的使用,Abaqus求解能力非常强大,但模型处理能力相对较弱。装配式混凝土结构的有限元计算与传统现浇结构相比,其节点处理起来相对复杂,计算结果往往需要凸显出连接节点力学特性,所以对建模精程度的要求较高。所以向大家介绍一款工具—HyperMesh软件(一下简称Hm),它是专业的有限元前处理工具,用于处理装配式混凝土构件或连接节点有限元模型比较合适。这篇文章主要介绍如何利用Hm处理 阅读详情

相关推荐

RDMA学习笔记-IB五层网络协议和报文结构

Reference InfiniBand Architecture Specification Volume 1, Release 1.3 文章目录IBA 网络协议分层1.链路层1.1 LRH1.2 ICRC1.3 VCRC2.网络层(GRH)3.传输层3.1 BTH3.2 extended transport header4. 报文结构4.1 send request4.2 RDMA Write request4.3 RDMA Read request4.4 ACK4.5 Atomic operatio

u014114310的博客 9472

两球相交求体积并

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

caowenbo2311694605的博客 3018

信捷XDH PLC多轴运动控制实战:Ethercat总线下的C语言封装技巧

本文深入探讨了在信捷XDH PLC平台上,如何利用C语言对EtherCAT总线多轴运动控制进行高效封装。通过设计全局数据池、模块化状态机及用户友好接口,将底层复杂的运动控制函数库抽象为清晰、可复用的高级模块,显著提升程序稳定性与可维护性,并分享了关键的实战避坑经验。

weixin_29188043的博客 160

牛客练习赛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

一文读懂:CAN总线Bus-Off的触发条件与自动恢复机制

本文详细解析CAN总线Bus-Off状态的触发条件与自动恢复机制。根据ISO 11898-1标准,当发送错误计数器(TEC)超过255时节点进入Bus-Off状态,并通过检测128次总线空闲条件实现自动恢复。文章结合实战案例,探讨硬件故障、软件配置及电磁干扰等常见触发场景,并提供快慢恢复策略与调试方法,帮助工程师快速定位并解决CAN网络故障。

rgv234567的博客 361

【Coze】在Coze平台使用源码创建工作流

Coze平台提供低代码工作流搭建功能,支持通过图形化界面快速构建自动化任务流程。用户可通过资源库创建工作流,导入JSON配置生成节点结构,连接起始节点并配置输入/输出字段(需定义数据类型)。平台提供试运行功能验证流程执行,支持可视化调试与发布上线。该方案适用于快速部署标准化业务逻辑,实现端到端的自动化处理。

Mr数据杨 2432

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

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

八百标兵奔北坡的博客 325

SAP 与 Palantir 合作全景解析:这不是普通集成,而是把 ERP、数据语义层、云迁移与企业级 AI 串成一条价值链

SAP与Palantir的战略合作聚焦企业数字化转型核心痛点,通过深度技术整合构建"数据-决策-执行"闭环。合作包含四大主线:云迁移连续性保障、SAP业务数据云与Palantir平台对接、联合工程开发、高监管行业优先落地。技术实现上采用SAP认证插件,支持双向数据交互和实时业务动作触发。该合作突破了传统ERP系统局限,将业务语义与AI执行相结合,特别适合制造业供应链优化、财务争议处理等高价值场景,为企业在云迁移过程中实现业务连续性与智能化升级提供新范式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

【牛客练习赛 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

基于OpenCV的实时疲劳检测系统实现

本文介绍了一个基于OpenCV的实时疲劳检测系统,使用Python实现。系统通过Haar级联分类器检测人脸和眼睛,计算眼睛宽高比(EAR)和PERCLOS(眼睛闭合时间比例)来评估疲劳程度,分为4个等级:正常、轻度、中度和重度疲劳。核心代码包含人脸眼睛检测、疲劳评估和可视化显示功能,具有实时性、稳定性和直观的视觉反馈。系统可通过摄像头实时监控驾驶员状态,为疲劳驾驶预警提供简单有效的解决方案。

weixin_62135607的博客 232

linux v3h平台开发系列详解(GMSL摄像头篇):1.11 解串器MIPI 1.5G高速率特殊deskew配置

解串器max96712 deskew配置

xian18809311584的博客 1775

牛客练习赛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详细过程版)【2025最新版】

统计滤波python详细过程版,博客长期更新,本文最近更新时间为:2025年1月12日。

点云侠的博客 5639

牛客练习赛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

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

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

牛客练习赛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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

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

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【牛客练习赛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、付费专栏及课程。

余额充值