codeforces 851C
来源:互联网 发布:传奇h5修改数据库教程 编辑:程序博客网 时间:2024/06/14 15:04
给你n个五维的点,找到一些这样的点,这个点和任意两个不同的点连线都可以形成直角或者钝角。做题的时候理解错题意了,当成只要有两个点能和他连成直角或钝角就符合条件了。
数量积判断夹角,暴力就好了。
还可以像标程那样,超出某个范围就是0,小范围内暴力。比如二维平面顶多只能由五个点,再多就没有合法的点了。
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int MAXN = 1010;int n;struct Point{ Point(){} Point(LL _a, LL _b, LL _c, LL _d, LL _e) :a(_a),b(_b),c(_c),d(_d),e(_e){} LL a,b,c,d,e;};Point ps[MAXN];vector<int> res;bool check(int i, int j, int k){ Point a(ps[j].a-ps[i].a,ps[j].b-ps[i].b,ps[j].c-ps[i].c,ps[j].d-ps[i].d,ps[j].e-ps[i].e); Point b(ps[k].a-ps[i].a,ps[k].b-ps[i].b,ps[k].c-ps[i].c,ps[k].d-ps[i].d,ps[k].e-ps[i].e); int ret = a.a*b.a + a.b*b.b + a.c*b.c + a.d*b.d + a.e*b.e; return ret <= 0;}int main(){ scanf("%d",&n); for(int i = 0; i < n; ++i) scanf("%d %d %d %d %d",&ps[i].a,&ps[i].b,&ps[i].c,&ps[i].d,&ps[i].e); for(int i = 0; i < n; ++i) { bool f = false; for(int j = 0; j < n; ++j) { if(i == j) continue; for(int k = 0; k < n; ++k) { if(k == j || k == i) continue; if(check(i,j,k) == false) { f = true; break; } } if(f) break; } if(!f) res.push_back(i+1); } cout << res.size() << endl; for(int x:res) cout << x << " "; cout << endl; return 0;}
阅读全文
0 0
- codeforces 851C 数学
- Codeforces 851C
- codeforces 851C
- codeforces 851C C. Five Dimensional Points
- Codeforces-340-C(c++)
- Codeforces-507-C(c++)
- CodeForces 731C C
- CodeForces-612C C
- CODEFORCES 265C CODEFORCES, 265C
- codeforces #78 div2 C
- Codeforces 117C Cycle
- CodeForces 209C
- CodeForces 156C Cipher
- codeforces 148 div2 C
- codeforces 242C
- Codeforces-234C Weather
- codeforces 106C Buns
- codeforces 158C
- 详解c++指针的指针和指针的引用-转载
- Hello CSDN
- CS50 2016-Week 0 学习笔记
- BZOJ 2212 [Poi2011]Tree Rotations 线段树合并
- Linux下定时任务crontab实践
- codeforces 851C
- 【CSS】background-clip属性解决background问题。
- 爬虫实战之四--urllib库的使用详解
- npm安装一些包失败解决方案
- 红帽系统开机启动流程
- 辗转相除法
- 非父子组件的数据传递
- css html的三列弹性布局
- 1.计算机硬件组成