简单板子题

  • 题意
  • 代码

题意

[原题链接](https://ac.nowcoder.com/acm/contest/11253/F) 大致题意: 有A,B,C,D四个点(三维坐标)和k1,k2两个常数

在空间上取一点P1使 |AP1|/|BP1|=k1 (所有的P1集合会是一个球体)
取一点P2使 |CP2|/|DP2|=k2 (所有的P2集合会是一个球体)
然后求两个球体的相交的体积大小


提示:以下是本篇文章正文内容,下面案例可供参考

代码

#include <bits/stdc++.h>
#include<math.h>
#define endl "\n"
const double PI = acos(-1.0);
const double EI = exp(1.0);
const int inf = 0x3f3f3f3f;
const int maxn = 1000050;
using namespace std;
//Spherical_Cap 球缺
struct point //三维
{double x, y, z;point() {}   // 构造函数point(double a, double b, double c) :x(a), y(b), z(c) {}void in() { cin >> x >> y >> z; }
};
inline point operator+(point a, point b) { return point(a.x + b.x, a.y + b.y, a.z + b.z); }
inline point operator-(point a, point b) { return point(a.x - b.x, a.y - b.y, a.z - b.z); }
inline point operator*(double k, point a){ return point(a.x * k, a.y * k, a.z * k); }   // 常数 k 乘以一个向量or点
inline double distance(point a) { return sqrt(a.x * a.x + a.y * a.y + a.z * a.z); }   // 点到原点的距离  distance(A-B)即是AB的距离
void getsphere(point A, point B,double k, point& O, double& R)  //用阿圆 得出球体的球心 和半径  AP/BP=k  传出O球心坐标 和R半径
{O = B + 1/ (k * k - 1)*(B-A);R = k / (k * k - 1) * distance(A-B);
}
double Spherical_Cap(double R, double H)  // R是球的半径  H是球缺的高度
{return PI * H * H * (R - H / 3.0);
}
// curved surface of spherical cap 球冠
double Cureer_Surface_Of_Spherical_Cap(double R, double H)
{return 2 * PI * R * H;
}
double Overlapping_volume_sphere(point A, double R1, point B, double R2) // 计算重叠球体体积大小
{double d = distance(A - B);if (d > R1 + R2)return 0;else if (d < fabs(R1 - R2)){if (R1 < R2)swap(R1, R2);return R2*4.0/3 * PI * R2 * R2;}else{double h1 = R1 - (R1 * R1 + d * d - R2 * R2) / (2 * R1 * d) * R1; // 用余弦定理来算double h2 = R2 - (R2 * R2 + d * d - R1 * R1) / (2 * R2 * d) * R2;return Spherical_Cap(R1, h1) + Spherical_Cap(R2, h2);}
}
int main()
{std::ios_base::sync_with_stdio(false);cin.tie(0); cout.tie(0);int t;cin >> t;while (t--){point A, B, C, D;A.in(), B.in(), C.in(), D.in();double k1, k2;cin >> k1 >> k2;point O1, O2;double R1, R2;getsphere(A, B, k1, O1, R1);getsphere(C, D, k2, O2, R2);double p = Overlapping_volume_sphere(O1, R1, O2, R2);cout << fixed << setprecision(3) << p << endl;}return 0;
}

2021多校第二场F 简单计算几何模板(球体相交体积)相关推荐

  1. Fake Maxpooling(2020多校第二场F)

    Fake Maxpooling(2020多校第二场F) 文章目录 题意: 题解: 代码: 题意: 一个n * m的矩阵,第i行第j列的值是lcm(i,j),然后给定一个 k * k的子矩阵(k< ...

  2. Girlfriend(2021牛客多校第二场F)

    题目描述 输入描述 输出描述 输入样例 1 1 0 0 3 0 0 2 0 0 4 0 0 3 3 输出样例 0.262 数据范围 一个非常有意思(?)的题面,由题意不难看出所求为两人所在次元 (球) ...

  3. 2021牛客暑假多校第二场 K题—Stack (链表)

    2021牛客暑假多校第二场 K题-Stack 题意: 一个单调栈,给你第n次操作时里面数据的数量,让你给出里面塞入的会是哪些数字. 主要思想:链表模拟 (代码里面有注释) (题解一开始说的是拓扑,后来 ...

  4. 牛客多校第二场补题(继续罚坐)

    牛客多校第二场(继续罚坐场) Draw Grids ZYT和LBC玩游戏,在4*4的矩阵中,从起点开始,每个人只能连一条直线,且只能在起点或者上一个人的终点位置连上这个位置相邻的一条直线,并且不能形成 ...

  5. Duration(2020多校第二场D)

    Duration(2020多校第二场D) 文章目录 题意 题解 代码 首先,非常感谢出题人出这个题,避免了我全wa的尴尬 题意 求两个时间相差多少秒,两个时间为同一天 题解 全部转化成秒,然后求差 代 ...

  6. Boundary(2020多校第二场B)

    Boundary(2020多校第二场B) 文章目录 题意: 题解: 思路1: 代码: 思路二 代码 题意: 坐标平面有n个点(不与原点(0,0)重复),现考虑一个圆,(0,0)点在圆的边界,问这个圆的 ...

  7. 【多校训练】2021牛客多校第二场

    [前言] 这是打的第二场,rk39,但是AB这两个比较简单的题都没做emm,大概还是磨合的不够.然后感觉对于阈值类的东西还不是很敏感,应该看到不太好做就直接去想这种阈值的.校内3/9(然后就开启了常年 ...

  8. 2021牛客多校第二场 A——Arithmetic Progression

    题目大意 给你一个长度为 nnn 的数列 aaa ,数列中每个元素都不一样,问你存在多少个区间,这些区间内的数排序后是一个等差数列 解题思路 对于一个区间,如果这个区间内的数排序后的元素可以构成一个等 ...

  9. 2019 牛客多校第二场 4/10

    题会慢慢补完的,最近在帮别人上课,补题速度很慢,一边看ppt一边刷ppt的题还要补多校的,感觉有点应付不过来,不过以后会慢慢补完的(指整个暑假) A 这场出题人的英文水平真的搞事,不说了((( 这题起 ...

  10. HDU 2020 多校第二场 游记

    咕了整整一天才来写 2333 这次邓老师没来 /kk,不过打的还算不错,可惜还是有一题没调出来,不然就是 11 题队了 /ll 1001 题意好像有点奇怪,不过 djq 还是一眼看对了,拿了这题一血. ...

最新文章

  1. Java非阻塞I/O模型之NIO说明
  2. 0417 jsBom操作+Dom再次整理
  3. 如何使用Openssl 制作CA证书
  4. python程序的书写特点_不一样的Python代码写法,让你写出一手漂亮的代码
  5. Open vSwitch 概述
  6. 冬季海报素材温暖上线,PSD分层设计师最爱
  7. @贾跃亭,证监会喊你本周回国对乐视负责!
  8. 启动Intent之前先检查是否有合适的接收者
  9. 【matlab】clc,close,close all,clear,clear all作用
  10. 12306是抢票原理分析-多线程之间实现同步
  11. 如何解决Vray for 3ds Max中的3个错误
  12. python实现sklearn的基本操作流程,sklearn预处理方法,sklearn基础算法的使用,以及sklearn模型的选择方法。
  13. windows操作系统知识最全
  14. python日历函数_Python—日历函数—日历模块的常用函数,calendar,常见
  15. java计算机毕业设计springboot+vue足球联赛管理系统
  16. Haystack:Facebook 的照片存储系统
  17. 2021年5月29保险险种通用用例
  18. 画世界怎么用光影_【色彩】色彩绘画时四种光影的运用~
  19. HTML入门二(列表,表格与表单)
  20. 【Mac 教程系列】如何在 Mac 上破解带有密码的 ZIP 压缩文件 ?

热门文章

  1. 20172301 2017-2018-2 《程序设计与数据结构》第十周学习总结
  2. 李力刚《谈判博弈》读书笔记
  3. java超链接大全_JavaFX超链接
  4. 删除文件提示该路径不存在 解决办法
  5. linux 中gnu的含义是,GNU是什么意思
  6. 阿里巴巴sign参数解密
  7. 做word计算机海报图片,使用word制作宣传海报.doc
  8. java判断名字是否为张三_现有5个学生{张三,李四,王五,那六,小七}的数组,输入一个姓名,检查姓名是否存在,如果java啊...
  9. Wireguard 全互联模式(full mesh)权威指南
  10. 使用开源软件FFmpeg将各种格式视频转换成MP4视频格式(最简单方法)