并没有做到这道题,后来听学长说了题意,总之就是立体几何嗯

  看了好几份题解,是的我知道是异面线段的距离了,可是看码完全不明orz。

  这时候出现了一份清晰易懂甚至给出了公式来源的blog╰(*°▽°*)╯

  仔细一看是kuangbin的blogΣ(⊙▽⊙"让我先%一%orz

  http://blog.sina.com.cn/s/blog_a401a1ea0101ij9z.html公式Time Tunnel在此

  <!----------这部分是解释给以后看不懂的自己的---------->

       (一张简约线条的示意图)

    首先获得两线段的向量(e1,e2),然后叉乘得到垂直于两线段的直线p,p与其中一条线段形成的平面截另一线段于一点,同理得两线段(的延长线)上各一点,则该两点间的距离为两线段最短距离。

    那么一线段指向另一线段的向量AB在p上的投影即为最短距离。

    需要记住的公式  d=|p·AB/p|  交点R1=A+t1·e1  

             t1=((B-A)Xe2)·(e1Xe2)/|e1Xe2|2    t2=((B-A)Xe1)·(e1Xe2)/|e1Xe2| 

  <!-------OVER------->

  那么就放一下最后按照蒟蒻习惯敲的乱码,似乎并不需要求两点距离,所以kuangbin的题解里有dis而蒟蒻偷懒没写

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
struct node {
double x, y, z;
node(double a=, double b=, double c=) {
x = a; y = b; z = c;
}
node operator + (const node &p) const { return node(x + p.x, y + p.y, z + p.z); }
node operator - (const node &p) const { return node(x - p.x, y - p.y, z - p.z); }
double operator * (const node &p) const { return x * p.x + y * p.y + z * p.z; }
node operator ^ (const node &p) const { return node(y*p.z - z * p.y, z*p.x - x * p.z, x*p.y - y * p.x); }
node operator * (double p) { return node(x*p, y*p, z*p); }
node operator / (double p) { return node(x / p, y / p, z / p); }
}A1,B1,A2,B2,poa,pob; double f(const node &a) { return sqrt(a.x*a.x + a.y*a.y + a.z*a.z); } int main()
{
int t;
cin >> t;
while (t--) {
cin >> A1.x >> A1.y >> A1.z >> B1.x >> B1.y >> B1.z >> A2.x >> A2.y >> A2.z >> B2.x >> B2.y >> B2.z;
node e1 = A1 - B1;
node e2 = A2 - B2;
node e3 = A1 - A2;
node p = e1 ^ e2;
double d = fabs((A1 - A2)*p / f(p));
double t1 = ((A2 - A1) ^ e2)*(e1^e2);
double t2 = ((A2 - A1) ^ e1)*(e1^e2);
double q = f(e1^e2)*f(e1^e2);
t1 /= q; t2 /= q;
poa = A1 + (e1*t1);
pob = A2 + (e2*t2);
printf("%.6lf\n", d);
printf("%.6lf %.6lf %.6lf %.6lf %.6lf %.6lf\n", poa.x, poa.y, poa.z, pob.x, pob.y, pob.z);
}
return ;
}

HDU-4741

  注意事项:不太明白重载operator的优先级判断,我选择打括号,并且由于严格按照定义的运算对象,所以数乘的时候数和结构体的位置不能互换。

          //4.16.接收到神仙的补充,优先级和普通的优先级一样,所以最后的poa和pob里的括号是可以去掉的。

       算t1和t2的时候A2,A1的位置会影响结果的正负,反正有样例,试一下好了(实际上是这个懒惰的没有手算样例的人并没有搞清楚为什么)

比预计的结束时间晚了二十分钟嘤。

[数]昨天欠下的一道立体几何题HDU-4741的更多相关文章

  1. 可恶!学了这么久的LCA,联考的题目却是LCA+树形DP!!!可恶|!!!这几天想学学树形DP吧!先来一道入门题HDU 1520 Anniversary party

    题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri, ...

  2. 又是一道水题 hdu背包

    Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负) ...

  3. 2013杭州网络赛D题HDU 4741(计算几何 解三元一次方程组)

    Save Labman No.004 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. 玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)

    前文 的最后给出了玉伯的一道课后题,今天我们来讲讲这题的思路. 题目是这样的: Number.MAX_VALUE + 1 == Number.MAX_VALUE; Number.MAX_VALUE + ...

  5. 又一道简单题&&Ladygod(两道思维水题)

    Ladygod Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

  6. 【数据结构】 最小生成树(四)——利用kruskal算法搞定例题×3+变形+一道大水题

    在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建 ...

  7. POJ-1200 Crazy Search,人生第一道hash题!

                                                        Crazy Search 真是不容易啊,人生第一道hash题竟然是搜博客看题解来的. 题意:给你 ...

  8. 第三届山西省赛1004 一道大水题(scanf)

    一道大水题 时间限制: C/C++ 2000ms; Java 4000ms 内存限制: 65535KB 通过次数: 44 总提交次数: 1020 问题描述 Dr. Pan作为上兰帝国ACM的总负责人, ...

  9. ny525 一道水题

    一道水题时间限制:1000 ms  |  内存限制:65535 KB 难度:2描述 今天LZQ在玩一种小游戏,但是这游戏数有一点点的大,他一个人玩的累,想多拉一些人进来帮帮他,你能写一个程序帮帮他吗? ...

随机推荐

  1. WebSocket 的理解

    WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.依靠这种技术可以实现客户端和服务器端的长连接,双向实时通信. 它的最大特点就是,服务器可以主动向客户端推送信息,客 ...

  2. 利用matplotlib库和numpy库画数学图形

    首先,电脑要安装到matplotlib库和numpy库,这可以通过到命令符那里输入“pip install matplotlib ”,两个操作一样 其次,参照下列代码: import numpy as ...

  3. 用PIL库进行图像处理

    一.如果系统里没有安装PIL库的,请先到命令提示符输入“pip install pillow”进行安装 二.之后就可以参考以下的代码 from PIL import Image from pylab ...

  4. 20171012--jq 遍历取值

    1.父节点:parent(); 2.子节点:children(); 3.兄弟节点:siblings(); 4.用find:$("div").find("span" ...

  5. HackerRank-Python攻城歷程-3.List( Find the Second Largest Number )

    if __name__ == '__main__': n = int(input()) arr = map(int, input().split()) print(sorted(list(set(ar ...

  6. php动态获取网页图片路径~

    <?phpheader("Content-type:text/html;charset=utf-8"); 请求的url $url = 'http://dsc.taobaocd ...

  7. spring data jpa开启批量插入、批量更新

    spring data jpa开启批量插入.批量更新 原文链接:https://www.cnblogs.com/blog5277/p/10661096.html 原文作者:博客园--曲高终和寡 *** ...

  8. H5外包团队 2019案例更新

    H5外包团队 2019案例更新 本项目控件均为动态加载,3D部分使用Unity3D,其它基于ReactJS,NodeJS,部分使用cocos2D,由于项目涉密,只能发部分截图,欢迎联系索取更多案例,企 ...

  9. python打包exe

    https://www.imooc.com/article/246868 虽然在3.7下报错了,但是先码

  10. 在线批量将gps经纬度坐标转换为百度经纬度坐标

    1.首先打开百度api示例页面: 在浏览器地址栏中输入:http://developer.baidu.com/map/jsdemo.htm#a5_3 2.修改代码 如下图,将需要批量转换的坐标,按规则 ...