Codeforces 850A - Five Dimensional Points(暴力)
阿新 • • 發佈:2017-09-11
int .com bsp http include 存在 color == ble
原題鏈接: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(暴力)