• Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) C. Five Dimensional Points


    题意:给出一些五维坐标里的点,问有多少个好点,好点的定义为与其他任意2个点的向量夹角>=90°

    思路:枚举,当这个点为好点的时候,我们可以确定另外2个点必为坏点,根据三角形内角和180°,然后跑就行

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int N = 1e3+100;
     5 int ans[N],vis[N],n;
     6 struct node{
     7     int a,b,c,d,e;
     8 }x[N];
     9 int check(int i,int j,int k) {
    10     int sum=(x[j].a-x[i].a)*(x[k].a-x[i].a)+(x[j].b-x[i].b)*(x[k].b-x[i].b)+(x[j].c-x[i].c)*(x[k].c-x[i].c)
    11         +   (x[j].d-x[i].d)*(x[k].d-x[i].d)+(x[j].e-x[i].e)*(x[k].e-x[i].e);
    12     return sum;
    13 }
    14 int main() {
    15     int n;
    16     scanf("%d",&n);
    17     for(int i = 1; i <= n; ++i) {
    18         scanf("%d%d%d%d%d",&x[i].a,&x[i].b,&x[i].c,&x[i].d,&x[i].e);
    19     }
    20     for(int i=1;i<=n;++i) {
    21         int t= 0;
    22         if(vis[i]) continue;
    23         for(int j=1;j<=n;++j) {
    24             for(int k = 1; k <= n; ++k) {
    25                 if(i == j || j ==k || i == k) continue;
    26                 if(check(i,j,k) > 0) {
    27                     t = 1;
    28                     break;
    29                 }
    30                 else {
    31                     vis[j] = 1;
    32                     vis[k] = 1;
    33                 }
    34             }
    35             if(t) break;
    36         }
    37         if(t) vis[i] = 1;
    38     }
    39     int sum= 0;
    40     for(int i = 1; i <= n; ++i) if(!vis[i]) ans[++sum] = i;
    41     cout<<sum<<endl;
    42     for(int i = 1; i <= sum; ++i) cout<<ans[i]<<endl;
    43     return 0;
    44 }
  • 相关阅读:
    Vagrant命令
    您必须知道的 Git 分支开发规范
    phpstorm的提速设置
    Flex 布局教程:语法篇
    Bootstrap 3 & 4 的多级下拉菜单示例
    申请快递查询100接口
    vue.js组件与组件之间的通信
    MAMP环境下 cookie无法正常使用
    Git 常用命令
    Linux学习笔记之yum安装mysql5.7
  • 原文地址:https://www.cnblogs.com/hhxj/p/7477225.html
Copyright © 2020-2023  润新知