Codeforces 850 A. Five Dimensional Points(暴力/抽屉定理)

来源:互联网 发布:如何注册网络作家 编辑:程序博客网 时间:2024/06/05 07:34

题目:http://codeforces.com/problemset/problem/850/A
题意:给你在五维空间的n个点,没有相同的点。a点bad,如果和其他两点组成的角有小于90度的情况,反之good
思路:根据抽屉定理,可以判断good的情况最多有11个点(直角和锐角肯定只能存在不同象限或者坐标轴上),再多的话肯定会有锐角的情况,这个还是三维容易看些
(其实暴力枚举可过
代码:

#include<bits/stdc++.h>using namespace std;typedef long long ll;int pos[1005];struct node{    int a[5];}p[1005];int main(){    int n;    scanf("%d",&n);    for(int i = 1;i <= n;i++)        for(int j = 0;j < 5;j++)            scanf("%d",&p[i].a[j]);        if(n > 11)            return 0 * printf("0\n");        bool flag;        int sum = 0;        for(int i = 1;i <= n;i++)        {            flag = false;            for(int j = 1;j <= n;j++)            {                if(i == j) continue;                for(int k = j+1;k <= n;k++)                {                    if(i == k) continue;                    int t = 0;                    for(int h = 0;h < 5;h++)                        t += (p[i].a[h]-p[j].a[h])*(p[i].a[h]-p[k].a[h]);                    if(t > 0)                    {                        flag = true;                        break;                    }                }                if(flag)                    break;            }            if(!flag)                pos[++sum] = i;        }        printf("%d\n",sum);        for(int i = 1;i <= sum;i++)            printf("%d\n",pos[i]);    return 0;}