codeforces851C. Five Dimensional Points(暴力/思维)
来源:互联网 发布:中国税务网络大学 加速 编辑:程序博客网 时间:2024/06/07 23:13
题意:
给你几个五维空间上的点,问你有几个好点,
好点定义:任意其他两个点与该点的夹角不为锐角。
思路:
1.只要判断为坏点后马上break,暴力能过。。(我天,,我当时没敢写,看来以后遇事不决先暴力优化一发试试)
2.只要n>11这个空间上必定没有好点,因为五维空间理论上只有5条互相垂直的直线,若一个点为好点,该空间最多只有11个点(五条垂线的交点为好点,其他的点分别在每条垂线上,即5*2+1)
两种思路均按照题意模拟即可;
两种思路跑起来均为15ms((数据好弱。。。
暴力代码:
#include <bits/stdc++.h>using namespace std;const double pi = acos(-1.0);int arr[1001][5];int ans[1001];int main(){ int n; cin>>n; if(n<3) { for(int i = 0;i<n;i++) { int a; scanf("%d%d%d%d%d%d",&a,&a,&a,&a,&a,&a); } printf("%d\n",n); for(int i = 0;i<n;i++) printf("%d\n",i+1); } else { for(int i = 0;i<n;i++) { for(int j = 0;j<5;j++) { scanf("%d",&arr[i][j]); } } int len = 0; for(int i = 0;i<n;i++) { int flag = 0; for(int j = 0;j<n&&flag==0;j++) { if(i==j) continue; for(int k = 0;k<n&&flag==0;k++) { if(k==i||k==j) continue; double xy = 0,xx = 0,yy = 0; for(int z = 0;z<5;z++) { xx += (arr[j][z]-arr[i][z])*(arr[j][z]-arr[i][z]); yy += (arr[k][z]-arr[i][z])*(arr[k][z]-arr[i][z]); xy+=(arr[j][z]-arr[i][z])*(arr[k][z]-arr[i][z]); } double s=sqrt(xx)*sqrt(yy); if(acos(xy/s)>=0&&acos(xy/s)<pi/2) { flag = 1; } } } if(!flag) { ans[len++] = i+1; } } printf("%d\n",len); for(int i = 0;i<len;i++) printf("%d\n",ans[i]); } return 0;}
数学思维:
#include <bits/stdc++.h>using namespace std;const double pi = acos(-1.0);int arr[11][5];int ans[11];int main(){ int n; cin>>n; if(n>11) { for(int i = 0;i<n;i++) { int a; scanf("%d%d%d%d%d%d",&a,&a,&a,&a,&a,&a); } puts("0"); } else if(n<3) { for(int i = 0;i<n;i++) { int a; scanf("%d%d%d%d%d%d",&a,&a,&a,&a,&a,&a); } printf("%d\n",n); for(int i = 0;i<n;i++) printf("%d\n",i+1); } else { for(int i = 0;i<n;i++) { for(int j = 0;j<5;j++) { scanf("%d",&arr[i][j]); } } int len = 0; for(int i = 0;i<n;i++) { int flag = 0; for(int j = 0;j<n&&flag==0;j++) { if(i==j) continue; for(int k = 0;k<n&&flag==0;k++) { if(k==i||k==j) continue; double xy = 0,xx = 0,yy = 0; for(int z = 0;z<5;z++) { xx += (arr[j][z]-arr[i][z])*(arr[j][z]-arr[i][z]); yy += (arr[k][z]-arr[i][z])*(arr[k][z]-arr[i][z]); xy+=(arr[j][z]-arr[i][z])*(arr[k][z]-arr[i][z]); } double s=sqrt(xx)*sqrt(yy); if(acos(xy/s)>=0&&acos(xy/s)<pi/2) { flag = 1; } } } if(!flag) { ans[len++] = i+1; } } printf("%d\n",len); for(int i = 0;i<len;i++) printf("%d\n",ans[i]); } return 0;}
阅读全文
1 0
- codeforces851C. Five Dimensional Points(暴力/思维)
- - Five Dimensional Points(暴力)
- Five Dimensional Points CodeForces
- Codeforces 850 A. Five Dimensional Points(暴力/抽屉定理)
- Codeforces Round #432 (Div. 2) C 850A Five Dimensional Points(思维)
- codeforces 851C C. Five Dimensional Points
- Codeforces Round #432 C. Five Dimensional Points
- codeforces 851C Five Dimensional Points 鸽巢定理
- codeforces 851 #432 div2 C Five Dimensional Points
- codeforce 850A Five Dimensional Points(特殊判别)
- Codeforces Round #432 (Div. 2) C Five Dimensional Points
- Codeforces Round #432 (Div. 1) A.Five Dimensional Points
- Codeforces 851C . Five Dimensional Points 计算几何,结论
- Codeforces 851 C Five Dimensional Points(数学概念优化)
- codeforces 851 C (Div#432) Five Dimensional Points
- Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017)C. Five Dimensional Points
- Codeforces Round #432 Div. 2 C. Five Dimensional Points(数学)
- hdu2699 Five in a Row 暴力穷举
- 算法--粒子群算法PSO的介绍
- 如何在其他线程中修改主UI属性及对象元素特性
- linux ubuntu ftp配置与实验
- vue组件间通信
- Oralce增量同步方案系列1-方案选型
- codeforces851C. Five Dimensional Points(暴力/思维)
- Redis-Jedis操作
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
- 导入已经存在的java工程(非maven)
- linux下无法识别u盘 因为U盘在使用就拔掉U盘
- 【莫队算法】小z的袜子(入门)
- Largest Point
- POJ-1651(区间DP)
- 三千大数阶乘