Special Tetrahedron

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 328    Accepted Submission(s): 130

Problem Description
Given n points which are in three-dimensional space(without repetition).

Please
find out how many distinct Special Tetrahedron among them. A
tetrahedron is called Special Tetrahedron if it has two following
characters.

1. At least four edges have the same length.

2. If it has exactly four edges of the same length, the other two edges are not adjacent.

 
Input
Intput contains multiple test cases.

The first line is an integer T,1≤T≤20, the number of test cases.

Each case begins with an integer n(n≤200), indicating the number of the points.

The next n lines contains three integers xi,yi,zi, (−2000≤xi,yi,zi≤2000), representing the coordinates of the ith point.

 
Output
For
each test case,output a line which contains"Case #x: y",x represents
the xth test(starting from one),y is the number of Special Tetrahedron.
 
Sample Input
2
4
0 0 0
0 1 1
1 0 1
1 1 0
9
0 0 0
0 0 2
1 1 1
-1 -1 1
1 -1 1
-1 1 1
1 1 0
1 0 1
0 1 1
 
Sample Output
Case #1: 1
Case #2: 6
 
题意:在空间中的点里面找到有多少点可以组成满足下列条件的四面体:
1.至少有四条边相同.
2.在确保4条边相等的情况下,另外的两条边不相邻。
QAQ,昨天4道题止步于网络赛,奈何这个第五道三维几何没做过,被吓住了 TAT ..根本没有1003难嘛。。
题解:枚举对角线,找到所有和对角线两端点相等的点,然后去枚举所有的和对角线距离相等的点(还要判断四点不共面)。因为有两条对角线,所以答案会被算两次。然后是正四面体,我们每条线都被多算了1次,总共算了6次,我们只要其中的一次。所以最终答案为 (ans-same)/2+same/6 = ans/2- same/3...交代码请用G++。。
aaarticlea/png;base64,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" alt="" />
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <map>
#define sqr(x) ((x)*(x))
using namespace std;
const double eps = 1e-;
struct Point
{
double x,y,z;
Point(double x, double y, double z) : x(x), y(y), z(z) {}
Point() {}
Point operator - (const Point & p) const
{
return Point(x-p.x, y-p.y, z-p.z);
}
} p[];
struct Node
{
int idx;
double dis;
}node[];
int sig(double d)
{
return (d>eps) - (d<-eps);
}
//叉乘
Point cross(const Point & a, const Point & b)
{
return Point(a.y*b.z-a.z*b.y, a.z*b.x-a.x*b.z, a.x*b.y-a.y*b.x);
}
Point cross(const Point & o, const Point & a, const Point & b)
{
return cross(a-o,b-o);
}
//点乘
double dot(const Point & a, const Point & b)
{
return a.x*b.x + a.y*b.y + a.z*b.z;
}
//判断四点共面
bool sameFace(const Point & a, const Point & b, const Point & c, const Point & d)
{
return sig(dot(b-a, cross(a, c, d))) == ;
}
//两点距离
double dis(const Point & a, const Point & b)
{
return sqrt(sqr(a.x-b.x) + sqr(a.y-b.y) + sqr(a.z-b.z));
}
int main()
{
int tcase,n,t=;
scanf("%d",&tcase);
while(tcase--)
{
scanf("%d",&n);
for(int i=; i<=n; i++)
{
scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z);
}
int ans = ,ans1=;
for(int i=; i<=n; i++)
{
for(int j=i+; j<=n; j++) ///枚举对角线
{
int cnt = ;
for(int k=; k<=n; k++)
{
if(sig(dis(p[i],p[k])-dis(p[j],p[k]))==)
{
node[++cnt].idx = k;
node[cnt].dis = dis(p[i],p[k]);
}
}
for(int k=; k<=cnt; k++)
{
for(int l=k+; l<=cnt; l++)
{
if(sig(node[k].dis-node[l].dis)!=) continue;
if(sameFace(p[i],p[j],p[node[k].idx],p[node[l].idx])) continue;
ans++;
if(sig(dis(p[node[k].idx],p[node[l].idx])-node[k].dis)==&&sig(dis(p[i],p[j])-node[k].dis)==)
{
ans1++;
}
}
}
}
}
printf("Case #%d: %d\n",t++,ans/-ans1/);
}
}
 

hdu 5839(三维几何)的更多相关文章

  1. HDU 5839 Special Tetrahedron

    HDU 5839 Special Tetrahedron 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5839 Description Given n ...

  2. hdu 4617 Weapon【异面直线距离——基础三维几何】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4617 Weapon Time Limit: 3000/1000 MS (Java/Others)     ...

  3. HDU 4617 Weapon(三维几何)

    Problem Description Doctor D. are researching for a horrific weapon. The muzzle of the weapon is a c ...

  4. HDU 5839 Special Tetrahedron (2016CCPC网络赛08) (暴力+剪枝)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5839 在一个三维坐标,给你n个点,问你有多少个四面体(4个点,6条边) 且满足至少四边相等 其余两边不 ...

  5. HDU 5839 Special Tetrahedron 计算几何

    Special Tetrahedron 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5839 Description Given n points ...

  6. HDU 5839 Special Tetrahedron (计算几何)

    Special Tetrahedron 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5839 Description Given n points ...

  7. HDU 4087 三维上的平移缩放旋转矩阵变化

    题目大意: 就是根据它给的程序的要求,不断平移,缩放,旋转三维的点,最后计算出点的位置 这里主要是要列出三种转换方式的齐次矩阵描述 平移translate tx ty tz1 0 0 00 1 0 0 ...

  8. HDU 3584 三维树状数组

    三维树状数组模版.优化不动了. #include <set> #include <map> #include <stack> #include <cmath& ...

  9. hdu 1140(三维)

    War on Weather Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

随机推荐

  1. NOIP2017 【游记】

    一年过去,想起去年还是个傻b[今年也是],心里总是无限的感慨. 脑海里是日日夜夜在机房的身影,一题一题AC的激情 我等今年等了许久,虽然我是个蒟蒻,但我有梦想的憧憬 鲲鹏展翅翼向天,扶摇直上九万里. ...

  2. jvm容器的关系

    jvm实例,tomcat容器,spring容器,在内存中的关系5 1.一个java项目对应一个jvm 吗? 2.tomcat里面加载多个java项目 ,是不是用了一个jvm? 3.java项目中的sp ...

  3. 「Python-Django」django 实现将本地图片存入数据库,并能显示在web上

    1. 将图片存入数据库 关于数据库基本操作的学习,请参见这一篇博客:https://www.cnblogs.com/leejy/p/6745186.html 这里我默认,您已经会了基本操作,能在数据库 ...

  4. powerdesigner中把表的描述复制到Name

    '****************************************************************************** '* File: comment2nam ...

  5. 《用Apache HttpClient实现URL重定向》

    作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 很多网站都使用了URL重定向技术,把一个原始请求从一个位置路由到另一个位置.原因可能是多方面的,比如域名转 ...

  6. SpringCloud学习(1)——SpringCloud概述

    微服务架构: 微服务架构是一种架构模式或者说是一种架构风格, 他提倡将单一应用程序划分成一组小的服务, 每个服务运行在其独立的进程中, 服务之间互相协调,互相配合, 为用户提供最终价值.服务之间采用轻 ...

  7. LeetCode-Sort List[AC源码]

    package com.lw.leet4; /** * @ClassName:Solution * @Description: * Sort List * Sort a linked list in ...

  8. UndertowServer+SpringMVC+Thymeleaf模板引擎构建轻量级的web项目

    这两周需要写一个页面来请求另一个服务中的接口,服务器采用了超轻量级的undertow,模板引擎采用的是Thymeleaf,在寻找页面资源位置这个地方难住了我.下面分享一下,这方面的代码. Spring ...

  9. bzoj 3261: 最大异或和 (可持久化trie树)

    3261: 最大异或和 Time Limit: 10 Sec  Memory Limit: 512 MB Description       给定一个非负整数序列 {a},初始长度为 N.       ...

  10. Linux下如何强制中断一个程序的执行?

    CTRL + C  中断 CTRL + Z  暂时放到后台 CTRL + D  保存退出