CCPC网络赛 HDU5839 Special Tetrahedron
题意:n个点,选四个出来组成四面体,要符合四面体至少四条边相等,若四条边相等则剩下两条边不相邻,求个数
思路:枚举四面体上一条线,再找到该线两个端点相等的点,放在一个集合里面。
要符合条件的话,则该集合里面找两个点,并且要判断一下。
注意,普通四面体会被重复计算两次,正四面体会重复计算六次 #include <bits/stdc++.h>
using namespace std;
#define LL long long
const double inf = 123456789012345.0;
const LL MOD =100000000LL;
const int N =;
#define clc(a,b) memset(a,b,sizeof(a))
const double eps = 1e-;
void fre() {freopen("in.txt","r",stdin);}
void freout() {freopen("out.txt","w",stdout);}
inline int read() {int x=,f=;char ch=getchar();while(ch>''||ch<'') {if(ch=='-') f=-; ch=getchar();}while(ch>=''&&ch<='') {x=x*+ch-'';ch=getchar();}return x*f;} struct Point {
double x,y,z;
Point() {}
Point(LL _x,LL _y,LL _z):x(_x),y(_y),z(_z) {}
Point operator + (const Point &t) const {
return Point(x+t.x,y+t.y,z+t.z);
}
Point operator -(const Point &t) const {
return Point(x-t.x,y-t.y,z-t.z);
}
Point operator *(const Point &t) const {
return Point(y*t.z-z*t.y,z*t.x-x*t.z,x*t.y-y*t.x);
}
double operator ^(const Point &t) const {
return x*t.x+y*t.y+z*t.z;
}
double len2(){
return x*x+y*y+z*z;
}
} p[N]; bool check(Point a,Point b,Point c,Point d) {
return (((a-b)*(a-c))^(a-d))==0.0;
} int l[];
int main() {
int T;
scanf("%d",&T);
for(int cas=; cas<=T; cas++) {
int n,cnt;
int ans=,tem=;
scanf("%d",&n);
for(int i=; i<=n; i++) scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z);
for(int i=; i<n; i++) {
for(int j=i+; j<=n; j++) {
cnt=;
for(int k=; k<=n; k++) {
if(k==i||k==j) continue;
Point p1,p2;
p1=p[k]-p[i];
p2=p[k]-p[j];
if(p1.len2()==p2.len2()) {
l[cnt++]=k;
}
}
for(int k=; k<cnt-; k++) {
for(int h=k+; h<cnt; h++) {
Point p1=p[l[h]]-p[i],p2=p[l[k]]-p[i];
if(p1.len2()!=p2.len2()) continue;
if(check(p[i],p[j],p[l[k]],p[l[h]])) continue;
ans++;
Point p3=p[l[k]]-p[l[h]];
Point p4=p[i]-p[j];
if(p1.len2()==p3.len2()&&p4.len2()==p3.len2())
tem++;
}
}
}
}
ans/=;
ans=ans-*tem/;
printf("Case #%d: ",cas);
printf("%d\n",ans);
}
return ;
}

(四面体)CCPC网络赛 HDU5839 Special Tetrahedron的更多相关文章

  1. 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree

    // 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree // 题意:n个点的树,每个节点有权值为正,只能用一次,每条边有负权,可以 ...

  2. 2018 CCPC网络赛

    2018 CCPC网络赛 Buy and Resell 题目描述:有一种物品,在\(n\)个地点的价格为\(a_i\),现在一次经过这\(n\)个地点,在每个地点可以买一个这样的物品,也可以卖出一个物 ...

  3. ccpc 网络赛 hdu 6155

    # ccpc 网络赛 hdu 6155(矩阵乘法 + 线段树) 题意: 给出 01 串,要么询问某个区间内不同的 01 子序列数量,要么把区间翻转. 叉姐的题解: 先考虑怎么算 \(s_1, s_2, ...

  4. 2018年 CCPC 网络赛 赛后总结

    历程:由于只是网络赛,所以今天就三开了.一开始的看题我看了d题,zz和jsw从头尾看起来,发现c题似乎可做,和费马大定理有关,于是和zz一起马上找如何计算勾股数的方法,比较慢的A掉了,而jsw此时看了 ...

  5. 2019杭电多校&CCPC网络赛&大一总结

    多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...

  6. hdu 6152 : Friend-Graph (2017 CCPC网络赛 1003)

    题目链接 裸的结论题.百度 Ramsey定理.刚学过之后以为在哪也不会用到23333333333,没想到今天网络赛居然出了.顺利在题面更改前A掉~~~(我觉得要不是我开机慢+编译慢+中间暂时死机,我还 ...

  7. 【2018 CCPC网络赛 1004】Find Integer(勾股数+费马大定理)

    Problem Description people in USSS love math very much, and there is a famous math problem . give yo ...

  8. hdu 5833 Zhu and 772002 ccpc网络赛 高斯消元法

    传送门:hdu 5833 Zhu and 772002 题意:给n个数,每个数的素数因子不大于2000,让你从其中选则大于等于1个数相乘之后的结果为完全平方数 思路: 小于等于2000的素数一共也只有 ...

  9. CCPC网络赛,HDU_5842 Lweb and String

    Problem Description Lweb has a string $S$. Oneday, he decided to transform this string to a new sequ ...

随机推荐

  1. Android:Android SDK Manager顺利下载

    默认的Android SDK只有Android 4.4的版本,如果需要其他版本的模拟器,需要Android SDK Manager下载, 1.打开Eclipse 2.选择Android SDK Man ...

  2. C++:虚函数的详解

    5.4.2 虚函数详解 1.虚函数的定义 虚函数就是在基类中被关键字virtual说明,并在派生类重新定义的函数.虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问 ...

  3. 奇怪的transform bug

    对一个元素使用transform:rotate 进行旋转,造成: 父元素的背景图位置偏移,往下降,背景图也会变模糊一些 造成重绘,导致该元素后面的兄弟元素受到影响,变得模糊,并且无法遮盖住父元素的背景 ...

  4. BZOJ 2299 向量

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2299 题意:给出一对数a,b,任意使用(a,b), (a,-b), (-a,b), (- ...

  5. ER模型到关系模型的转换规则

    E-R模型向关系模型的转换规则: 一.两元联系的转换规则 (1)实体类型的转换 将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体标识符即为关系的键. (2)联系类型的转换 a实体间的联 ...

  6. NodeJS常用库说明

    underscore:1.合并json async:1.异步编程同步化

  7. hdu 4961 Boring Sum (思维 哈希 扫描)

    题目链接 题意:给你一个数组,让你生成两个新的数组,A要求每个数如果能在它的前面找个最近的一个是它倍数的数,那就变成那个数,否则是自己,C是往后找,输出交叉相乘的和 分析: 这个题这种做法是O(n*s ...

  8. UVa 1401 (Tire树) Remember the Word

    d(i)表示从i开始的后缀即S[i, L-1]的分解方法数,字符串为S[0, L-1] 则有d(i) = sum{ d(i+len(x)) | 单词x是S[i, L-1]的前缀 } 递推边界为d(L) ...

  9. HDU 3467 (求五个圆相交面积) Song of the Siren

    还没开始写题解我就已经内牛满面了,从晚饭搞到现在,WA得我都快哭了呢 题意: 在DotA中,你现在1V5,但是你的英雄有一个半径为r的眩晕技能,已知敌方五个英雄的坐标,问能否将该技能投放到一个合适的位 ...

  10. Java Web编程的主要组件技术——JSP

    参考书籍:<J2EE开源编程精要15讲> JSP(Java Server Page)页面由HTML代码和嵌入其中的Java代码组成. 简单的JSP页面如: <html> < ...