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

80、编程学习资源与x86知识全解析 本文详细介绍了编程学习中多个领域的优秀书籍和博客资源,涵盖逆向工程、C/C++、x86/x86-64架构、ARM、汇编语言、Java、UNIX、密码学等多个方向。同时,深入解析了x86架构的核心知识,包括术语、通用寄存器、FPU寄存器、SIMD寄存器、调试寄存器以及常用指令的使用方法和操作步骤。通过本文,读者可以系统地掌握底层编程知识,并应用于逆向工程、系统开发和性能优化等领域。 阅读详情

相关推荐

智能车小白也能懂:手把手教你用LM358和工字电感搭建电磁循迹模块(附PCB设计避坑)

本文详细介绍了如何利用LM358运放和工字电感搭建智能车电磁循迹模块,从电感选型、电路设计到PCB布局和焊接调试,提供全流程实战指南。特别针对新手常见问题,如信号干扰、电路饱和等,给出具体解决方案和参数配置,帮助智能车比赛爱好者快速掌握电磁循迹技术。

weixin_30307921的博客 403

两球相交求体积并

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

caowenbo2311694605的博客 3018

【Zotero】《纯操作讲解,GPT配置,Zotero标注可视化》- 知识点目录

Temperature分布在。之间,越低输出越稳定;

墨门 3396

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

ICC II 时钟树综合(CTS)前奏:从约束定义到NDR规则的全方位设置指南

本文详细介绍了ICC II中时钟树综合(CTS)的前期准备工作,包括约束定义、NDR规则设置和时钟平衡点控制等关键步骤。通过实际案例和代码示例,指导工程师如何优化时钟偏斜、插入延迟和信号质量,确保芯片设计的时序收敛和性能稳定。特别强调了非默认布线规则(NDR)在时钟网络设计中的重要性。

weixin_42530458的博客 212

Windows下快速搭建MSYS2开发环境(含GCC与MinGW配置)

本文详细介绍了在Windows系统下快速搭建MSYS2开发环境的完整流程。通过使用pacman包管理器,可以便捷地安装GCC编译器与MinGW-w64工具链,并配置系统环境变量。文章还涵盖了从基础安装、系统更新到编译开源项目的实战指南,帮助开发者高效构建原生Windows程序,显著提升C/C++开发效率。

weixin_29213827的博客 539

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

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

八百标兵奔北坡的博客 325

Windows/Mac/Linux三系统保姆级教程:用llama.cpp将safetensors模型转gguf格式(附常见错误解决)

本文提供Windows、Mac和Linux系统下使用llama.cpp将safetensors模型转换为gguf格式的详细教程,涵盖环境配置、转换原理及常见错误解决方案。通过跨平台兼容性处理,帮助开发者高效完成模型格式转换,优化边缘计算性能。

weixin_29227425的博客 270

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

总结所有的池化(Pooling)方法

为什么池化? 池化(Pooling)层和卷积层、全连接层一样,都是卷积神经网络的组成部分。 卷积神经网络中的卷积层会将卷积Filter应用于输入图像,以便创建特征映射来总结输入中这些特征的存在。 卷积层被证明是非常有效的,在深层模型中叠加卷积层可以让接近输入的层学习低层特征(如线条),在模型中更深(高)的层用于学习高阶或者更抽象的特征,如形状或特定对象。 卷积层特征映射输入的一个局限性是它们只能精确记录特征在输入层的位置。这意味着在输入图像中特征位置的小幅移动将导致不同的特征映射。这可以随着重新裁剪

大脸猫的博客 1万+

1000Base-T1协议解读(基于802.3bq-2016 和Test Suite)

1000Base-T1是由一对双绞线实现全双工传输的以太网标准,采用PAM3编码方式(-1,0,1),编码后的实际传输符号速率为750Mbps。该标准的车载最大传输距离可达15米,主要应用于汽车产品开发过程。测试过程示波器要求带宽≥2G,采样率≥7.5Gbps,网分带宽≥1G。

qflook的博客 5335

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

【汽车 OTA 】差分升级

汽车 OTA 差分升级,本质是在整包 OTA 的基础上,通过“只传变化”的方式,大幅减少下载数据量、时间和成本,是当前车端软件升级的主流方向之一。

天赐好车的博客 485

牛客练习赛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) 第三版答案

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

余额充值