BC 62 (div.2) B
来源:互联网 发布:mysql批量更新数据 编辑:程序博客网 时间:2024/06/05 12:43
Clarke and five-pointed star
Accepts: 237
Submissions: 591
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
克拉克是一名人格分裂患者。某一天克拉克分裂为一个几何学习者,在研究多边形。在研究某一个多边形的时候,克拉克发现他多次遇到判断5个点是否能组成一个五角星的问题,在这里,这5个点分别代表五角星的五个顶点(顶角上的点)。于是他跑来想你求助,让你写出一个程序快速判定。即对于给出的5个点,判断这5个点是否能组成一个五角星。
输入描述
第一行一个整数T(1≤T≤10),表示数据的组数。每组数据有5行,每行有两个实数xi,yi(−109≤xi,yi≤109),表示第i个点的坐标。
输出描述
如果两个量相差小于10−4,则认为这两个量相等。对于每组数据,如果这5个点能组成一个五角星,则输出Yes,否则输出No。(如果5个点相同,那么也能组成一个五角星。)
输入样例
23.0000000 0.00000000.9270509 2.85316950.9270509 -2.8531695-2.4270509 1.7633557-2.4270509 -1.76335573.0000000 1.00000000.9270509 2.85316950.9270509 -2.8531695-2.4270509 1.7633557-2.4270509 -1.7633557
输出样例
YesNo
Hint
样例1如图样例2如图
判断正五角星,开始是用数学知识过的,最后被HACK了。这里有一个比较简单易写的思路。依次求出这5个点到其他4个点的距离,再排序,如果是正5边型那么排序后的数组的距离大小是对应相等的。
这一题应该特别注意一下精度问题,不要开的太高,我输出了一下,最多精确后6位就开始有误差了,开个4,5位的就可以了
#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>using namespace std;struct point{ double a,b;}eg[20];double leg[20][20];inline double f(point &x1,point &x2){ double temp= (x1.a-x2.a)*(x1.a-x2.a)+(x1.b-x2.b)*(x1.b-x2.b); return sqrt(temp);}#define eps 1e-4int main(){#ifdef CDZSC freopen("i.txt","r",stdin);#endif int t; scanf("%d",&t); while(t--) { for(int i=0;i<5;i++) { scanf("%lf%lf",&eg[i].a,&eg[i].b); }for(int i=0;i<5;i++){for(int j=0;j<5;j++){leg[i][j]=f(eg[i],eg[j]);}sort(leg[i],leg[i]+5);}int ok=1;for(int i=0;i<5;i++){for(int j=0;j<5;j++){double temp=leg[0][i];if(fabs(leg[j][i]-temp)>eps){ok=0;break;}}}puts(ok?"Yes":"No"); } return 0;}
0 0
- BC 62 (div.2) B
- BC#59 (div.2) B
- BC 62 (div.2) A
- BC#59 (div.2)
- BC #63 div(2) #2
- BC 61 (div.2) A
- BC #68 (div.2) A
- BC#78Div.2 1001
- bc div.2 1003 String【考思路】
- BC一周年B
- BC #65(B) 规律
- BC#78 (div.2)CA Loves GCD【N个数gcd】
- #271 (Div. 2) B
- #323 (Div. 2) B
- 327 (Div. 2) B
- 328 (Div. 2) B
- CF #230 (Div. 2) B
- CF #133(DIV.2) B
- LeetCode_Median of Two Sorted Arrays
- AJAX异步请求——练习
- hdu 1829 A Bug's Life(并查集+偏移向量)
- U盘安装Kali 2.0 cd-rom无法挂载解决方法
- 如何给App快速搭建虚拟服务器
- BC 62 (div.2) B
- Spring MVC笔记
- tokudb学习
- Arduino与Android蓝牙通信笔记
- APP中使用UI交互设计动效的三个好处
- Button设置单框不显示
- 启动控制台程序,重定向输入输出流
- muduo的reactor模式基本实现
- easyui datagrid 编辑状态时,为列添加文本改变事件