bzoj1964: hull 三维凸包
二维平面四个点求凸包面积->任选三个点面积之和/2
三维平面五个点求凸包体积->任选四个点体积之和/2
二维平面三个点面积->二个二维向量行列式值的绝对值/2
三维平面四个点体积->三个三维向量行列式值的绝对值/6
//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#include<set>
#include<map>
#define Formylove return 0
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
typedef long long LL;
typedef double db;
using namespace std; template<typename T>void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} struct pt {
db x,y,z;
pt(db x=0.0,db y=0.0,db z=0.0):x(x),y(y),z(z){}
}p[];
pt operator -(const pt&A,const pt&B) { return pt(A.x-B.x,A.y-B.y,A.z-B.z); } db calc(pt p1,pt p2,pt p3,pt p4) {
p1=p1-p4; p2=p2-p4; p3=p3-p4;
db rs=(p1.x*p2.y*p3.z-p3.x*p2.y*p1.z+p1.y*p2.z*p3.x-p1.x*p2.z*p3.y+p1.z*p2.x*p3.y-p1.y*p2.x*p3.z);
return fabs(rs)/6.0;
} int main() {
#ifdef ANS
freopen(".in","r",stdin);
freopen(".out","w",stdout);
#endif
while(scanf("%lf%lf%lf",&p[].x,&p[].y,&p[].z)!=EOF) {
db ans=;
For(i,,) scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z);
For(i,,) For(j,i+,) For(k,j+,) For(l,k+,)
ans+=calc(p[i],p[j],p[k],p[l]);
ans/=2.0;
printf("%.2lf\n",ans);
}
Formylove;
}
bzoj1964: hull 三维凸包的更多相关文章
- [BZOJ1964]hull 三维凸包:计算几何
分析 发现自己并不会计算几何. 所以先引用一下这位dalao的博客. 二维平面四个点求凸包面积->任选三个点面积之和/2 三维平面五个点求凸包体积->任选四个点体积之和/2 二维平面三个点 ...
- bzoj 1964: hull 三维凸包 计算几何
1964: hull 三维凸包 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 54 Solved: 39[Submit][Status][Discuss ...
- POJ 2225 / ZOJ 1438 / UVA 1438 Asteroids --三维凸包,求多面体重心
题意: 两个凸多面体,可以任意摆放,最多贴着,问他们重心的最短距离. 解法: 由于给出的是凸多面体,先构出两个三维凸包,再求其重心,求重心仿照求三角形重心的方式,然后再求两个多面体的重心到每个多面体的 ...
- hdu4273Rescue(三维凸包重心)
链接 模板题已不叫题.. 三维凸包+凸包重心+点到平面距离(体积/点积) 体积-->混合积(先点乘再叉乘) #include <iostream> #include<cstd ...
- hdu4449Building Design(三维凸包+平面旋转)
链接 看了几小时也没看懂代码表示的何意..无奈下来问问考研舍友. 还是考研舍友比较靠谱,分分钟解决了我的疑问. 可能三维的东西在纸面上真的不好表示,网上没有形象的题解,只有简单"明了&quo ...
- hdu 4273 2012长春赛区网络赛 三维凸包中心到最近面距离 ***
新模板 /* HDU 4273 Rescue 给一个三维凸包,求重心到表面的最短距离 模板题:三维凸包+多边形重心+点面距离 */ #include<stdio.h> #include&l ...
- POJ 3528 求三维凸包表面积
也是用模板直接套的题目诶 //#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include < ...
- UVA 11769 All Souls Night 的三维凸包要求的表面面积
主题链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=2869">点击打开链接 求给定的 ...
- BZOJ1209 [HNOI2004]最佳包裹 三维凸包 计算几何
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1209 题目概括 给出立体的n个点.求三维凸包面积. 题解 增量法,看了一天,还是没有完全懂. 上板 ...
随机推荐
- 分页查询 pagecount recordcount pagesize
pagecount=(recordcount+pagesize-1)/pagesize
- 每日js练习
第一次玩codewars,选了个最简单的题目 要求是: You have to write a function that describe Leo: if oscar was (integer) 8 ...
- 介绍一款代理端口管理工具--Proxfier
官网下载地址: https://www.proxifier.com/download/ProxifierSetup.exe 用户名随意填注册码下边 5EZ8G-C3WL5-B56YG-SCXM9-6Q ...
- 怎么用 pytorch 查看 GPU 信息
如果你用的 Keras 或者 TensorFlow, 请移步 怎么查看keras 或者 tensorflow 正在使用的GPU In [1]: import torch In [2]: torch.c ...
- hibernate的get方法和load方法区别
读者需注意:Hibernate版本不同,运行机制不太一样,以下是hibernate3.x作为讲解 get方法: Hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然 ...
- String hashCode 这个数字,很多人不知道!
作者:coolblog segmentfault.com/a/1190000010799123 1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法.然后大致看了一下 ...
- dfs(魔力转圈圈)
http://oj.jxust.edu.cn/contest/problem?id=1563&pid=4 题目描述 Storm有一个m行n列的整数矩阵. 他会从(1,1)开始,顺时针螺旋访问该 ...
- Segment tree Beats
Segment tree Beats Segment tree Beats,吉司机线段树,主要是关于如何用线段树实现区间取min/max.我们先看一道例题: HDU5306 Gorgeous Sequ ...
- 小白学Python(15)——pyecharts 绘制树形图表 Tree
Tree-基本示例 import json import os from pyecharts import options as opts from pyecharts.charts import P ...
- Solr的学习使用之(六)获取数据列表-SolrDocumentList
以下是我项目中获取新闻数据列表的写法,包括数据总量.数据列表,接下来会贴出分片查询(facet)等高级查询 基本的注释都有了: private ListPage<News> queryFr ...