BestCoder Round #38 1001 Four Inages Strategy 暴力

题意:给你空间中四个点,问你这四个点能否组成正方形。

解题思路:看两两之间的距离。根据正方形的性质求解。

解题代码:

 1 // File Name: c.cpp
 2 // Author: darkdream
 3 // Created Time: 2014年10月07日 星期二 00时41分28秒
 4
 5 #include<vector>
 6 #include<list>
 7 #include<map>
 8 #include<set>
 9 #include<deque>
10 #include<stack>
11 #include<bitset>
12 #include<algorithm>
13 #include<functional>
14 #include<numeric>
15 #include<utility>
16 #include<sstream>
17 #include<iostream>
18 #include<iomanip>
19 #include<cstdio>
20 #include<cmath>
21 #include<cstdlib>
22 #include<cstring>
23 #include<ctime>
24 #define LL long long
25 #define eps 1e-8
26 using namespace std;
27 struct node{
28     double x,y,z;
29 };
30 node a[5];
31 double dis[5][5];
32 double thedis(double x1, double y1,double z1, double x2,double y2,double z2)
33 {
34   return sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) + (z1-z2) *(z1-z2)) ;
35 }
36 bool ok()
37 {
38    for(int i = 1;i <= 4;i ++)
39    {
40        for(int j= 1;j <= 4 ; j ++)
41        {
42             dis[i][j] = thedis(a[i].x,a[i].y,a[i].z,a[j].x,a[j].y,a[j].z);
43        }
44      sort(dis[i] + 1,dis[i] + 1 + 4);
45    }
46    for(int i = 2;i <= 4;i ++)
47        for(int j = 1;j <= 4; j ++)
48        {
49           if(fabs(dis[i][j] - dis[i-1][j]) > eps)
50               return 0 ;
51        }
52    if(fabs(dis[1][4]-0 ) <eps)
53        return 0 ;
54    if(fabs(dis[1][3] - dis[1][2]) > eps)
55        return 0 ;
56    if(fabs(dis[1][3] * sqrt(2) - dis[1][4]) > eps)
57        return 0 ;
58    if(fabs(dis[1][3] - 0 ) < eps)
59        return 0 ;
60    if(fabs(dis[1][2] - 0 ) < eps)
61        return 0 ;
62    return 1;
63 }
64 int main(){
65    int n;
66    //freopen("A.in","r",stdin);
67    //freopen("A.out","w",stdout);
68    scanf("%d",&n);
69    for(int ca = 1 ; ca <= n ; ca ++)
70    {
71        for(int i= 1;i <= 4;i ++)
72           scanf("%lf %lf %lf",&a[i].x,&a[i].y,&a[i].z);
73        printf("Case #%d: ",ca);
74        if(ok())
75        {
76          printf("Yes\n");
77        }else {
78          printf("No\n");
79        }
80    }
81 return 0;
82 }

时间: 2024-10-14 18:20:57

BestCoder Round #38 1001 Four Inages Strategy 暴力的相关文章

暴力 BestCoder Round #46 1001 YJC tricks time

题目传送门 1 /* 2 暴力:模拟枚举每一个时间的度数 3 详细解释:http://blog.csdn.net/enjoying_science/article/details/46759085 4 期末考结束第一题,看看题解找找感觉:) 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #include <cstring> 9 #include <vector> 10 #include <iostr

暴力 BestCoder Round #41 1001 ZCC loves straight flush

题目传送门 1 /* 2 m数组记录出现的花色和数值,按照数值每5个搜索,看看有几个已满足,剩下 5 - cnt需要替换 3 ╰· 4 */ 5 #include <cstdio> 6 #include <algorithm> 7 #include <iostream> 8 #include <cstring> 9 #include <string> 10 using namespace std; 11 12 const int MAXN = 1

HDOJ 5206 Four Inages Strategy 暴力+几何

枚举两个点当做0号点的相邻两边,判断两边长度是否相等和垂直,然后用向量推最后一个点,比较是否相等 Four Inages Strategy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 375    Accepted Submission(s): 150 Problem Description Young F found a secr

BestCoder Round #1 1001 &amp;&amp; 1002 hdu 4857 4858

hdu 4857 逃生 第一题是拓扑排序,不是按照字典序最小输出,而是要使较小的数排在最前面..赛后弄了好久,才比较明白,我一直以为 反向建图,i从1到n,开始深搜dfs( i ),对i点的边,由小到大继续搜一下,同时标记搜过的数,搜过之后就不再搜,搜到底之后ans[cnt++] = u;这样顺序输出就是答案,后来经过超哥指点,才明白深搜贪心是错的.只有 反向建图,用优先队列把较大的数尽量排在前面,然后反序输出才是正解.. 1 #include<iostream> 2 #include<

BestCoder Round #2 1001 (简单处理)

题目链接 题意:给N条信息,每个信息代表有x个人从开始的时间 到 结束的时间在餐厅就餐, 问最少需要多少座位才能满足需要. 分析:由于时间只有24*60 所以把每个时间点放到 数组a中,并标记开始的时间+x, 结束的时间 -x.最后累加比较. 如果时间点太多的时候可以把时间点放到结构体里,排序,然后依次枚举结构体. 1 #include <iostream> 2 #include <cstring> 3 #include <cstdlib> 4 #include <

字符串处理 BestCoder Round #43 1001 pog loves szh I

题目传送门 1 /* 2 字符串处理:是一道水题,但是WA了3次,要注意是没有加'\0'的字符串不要用%s输出,否则在多组测试时输出多余的字符 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cstring> 7 #include <cmath> 8 using namespace std; 9 10 typedef long long ll; 11 const int MAXN = 1

贪心 BestCoder Round #39 1001 Delete

题目传送门 1 /* 2 贪心水题:找出出现次数>1的次数和res,如果要减去的比res小,那么总的不同的数字tot不会少: 3 否则再在tot里减去多余的即为答案 4 用set容器也可以做,思路一样 5 */ 6 #include <cstdio> 7 #include <iostream> 8 #include <cstring> 9 #include <string> 10 #include <algorithm> 11 using

BestCoder Round #2 1001 TIANKENG’s restaurant

不得不说,bastcoder是个hack游戏啊!!! 题意:求最少要多少张椅子才能让所有来的客人有地方坐!! 就是一个区间的处理吧!!!和HDU  1556 我待水似流年,流年待我似水神似!!!! 求的是重叠的区间最大,我们只要标记每个区间会有多少人就可以了!!! 然后在从0到1440分统计就OK了!! AC代码如下: #include<iostream> #include<cstdio> #include<cmath> #include<map> #inc

BestCoder Round #29 1001 GTY&#39;s math problem

GTY's math problem Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 0    Accepted Submission(s): 0 Problem Description GTY is a GodBull who will get an Au in NOI . To have more time to learn alg