码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 850A - Five Dimensional Points(暴力)

时间:2017-09-10 22:49:39      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:三个点   int   break   back   res   vector   target   blog   style   

原题链接:http://codeforces.com/problemset/problem/850/A

 

题意:有n个五维空间内的点,如果其中三个点A,B,C,向量AB,AC的夹角不大于90°,则点A是“bad”的否则是“good”。题目让我们输出good的点。

思路:从2,3维空间超过5,7个点时不存在“good”的点,可以简单推知五维空间内,超过11个点时不存在“good”的点,那么点数小于11时暴力,大于11时输出0.

其实由于数据量小,直接暴力也是可行的。

 

AC代码:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<vector>
 5 using namespace std;
 6 const int MAXN=1005;
 7 struct Node{
 8     int a,b,c,d,e;
 9 }node[MAXN];
10 bool pend(Node A, Node B, Node C)
11 {
12     Node AB,AC;
13     AB.a=B.a-A.a;
14     AB.b=B.b-A.b;
15     AB.c=B.c-A.c;
16     AB.d=B.d-A.d;
17     AB.e=B.e-A.e;
18     AC.a=C.a-A.a;
19     AC.b=C.b-A.b;
20     AC.c=C.c-A.c;
21     AC.d=C.d-A.d;
22     AC.e=C.e-A.e;
23     if(AB.a*AC.a+AB.b*AC.b+AB.c*AC.c+AB.d*AC.d+AB.e*AC.e<=0) return 0;
24     return 1;
25 }
26 int main()
27 {
28     int n;
29     while(cin>>n)
30     {
31         
32         vector<int> res;
33         for(int i=0;i<n;i++){
34             scanf("%d %d %d %d %d", &node[i].a, &node[i].b, &node[i].c, &node[i].d ,&node[i].e);
35         }
36         if(n==1){
37             printf("%d\n%d\n", 1, 1);
38             continue;
39         }
40         else if(n==2){
41             printf("%d\n%d\n%d\n", 2, 1, 2);
42             continue;
43         }
44         else if(n>11){
45             printf("%d\n", 0);
46             continue;
47         }
48         bool flag;
49         for(int i=0;i<n;i++){
50             flag=0;
51             for(int j=0;j<n;j++){
52                 for(int k=j+1;k<n;k++){
53                     if(pend(node[i], node[j], node[k])){
54                         flag=1;
55                         j=n+1;
56                         break;
57                     }
58                 }
59             }
60             if(!flag) res.push_back(i);
61         }
62         int l=res.size();
63         printf("%d\n", l);
64         for(int i=0;i<l;i++)
65             printf("%d\n", res[i]+1);
66     }
67     return 0;
68 }

 

 

Codeforces 850A - Five Dimensional Points(暴力)

标签:三个点   int   break   back   res   vector   target   blog   style   

原文地址:http://www.cnblogs.com/MasterSpark/p/7502616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!