BC 62 (div.2) B
2015-11-14 23:12
337 查看
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 \le T \le 10)T(1≤T≤10),表示数据的组数。 每组数据有55行,每行有两个实数x_i, y_i(-10^9 \le x_i, y_i \le 10^9)xi,yi(−109≤xi,yi≤109),表示第ii个点的坐标。
输出描述
如果两个量相差小于10^{-4}10−4,则认为这两个量相等。 对于每组数据,如果这55个点能组成一个五角星,则输出YesYes,否则输出NoNo。(如果55个点相同,那么也能组成一个五角星。)
输入样例
2 3.0000000 0.0000000 0.9270509 2.8531695 0.9270509 -2.8531695 -2.4270509 1.7633557 -2.4270509 -1.7633557 3.0000000 1.0000000 0.9270509 2.8531695 0.9270509 -2.8531695 -2.4270509 1.7633557 -2.4270509 -1.7633557
输出样例
Yes No
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-4 int 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; }
相关文章推荐
- range()和xrange()方法
- Swift语言的扩展与协议(接口)
- [Flux] Component / Views
- Xcode开发技巧之code snippets(代码片段)
- Spring MVC笔记
- Arduino与Android蓝牙通信笔记
- muduo的reactor模式基本实现
- nginx的rewrite伪静态配置机理笔记 , nginx 的一些内置变量
- U盘安装Kali 2.0 cd-rom无法挂载解决方法
- easyui datagrid 编辑状态时,为列添加文本改变事件
- java学习碰到死胡同了
- 银行实时支付系统是怎么躲过双十一这一坎的呢?
- SQL Server 大文件异地备份
- Button设置单框不显示
- APP中使用UI交互设计动效的三个好处
- 曾几何时遇到的bug(viewpager+fragment)
- 顺时针与逆时针
- 设计一款给爸爸妈妈用的手机
- Unity3D播放视频
- hdu 5565 Clarke and baton 二分