hdu 5365 计算几何 给几个点判断是否为正方形
来源:互联网 发布:thinkphp5开发大型cms 编辑:程序博客网 时间:2024/05/01 17:14
Run
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Problem Description
AFA is a girl who like runing.Today,he download an app about runing .The app can record the trace of her runing.AFA will start runing in the park.There are many chairs in the park,and AFA will start his runing in a chair and end in this chair.Between two chairs,she running in a line.she want the the trace can be a regular triangle or a square or a regular pentagon or a regular hexagon.
Please tell her how many ways can her find.
Two ways are same if the set of chair that they contains are same.
Please tell her how many ways can her find.
Two ways are same if the set of chair that they contains are same.
Input
There are multiply case.
In each case,there is a integer n(1 < = n < = 20)in a line.
In next n lines,there are two integers xi,yi(0 < = xi,yi < 9) in each line.
In each case,there is a integer n(1 < = n < = 20)in a line.
In next n lines,there are two integers xi,yi(0 < = xi,yi < 9) in each line.
Output
Output the number of ways.
Sample Input
40 00 11 01 1
Sample Output
1
最后题目意思就是给你一系列点,问能组成正三角形,正四边形,正五边形,正六边形的个数(如果使用的点相同,则视为一种),实际上由于正三角形正五边形,正六边形不可能都由整数点(即横坐标和纵坐标都是整数)构成,故我们只用判断能组成多少个正方形即可。
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<queue>#include<stack>#include<math.h>#include<vector>#include<map>#include<set>#include<stdlib.h>#include<cmath>#include<string>#include<algorithm>#include<iostream>using namespace std;struct point{ int x,y;} pp[110];int s[6];bool judge(int a,int b,int c,int d){ int cnt=0; s[cnt++]=(pp[b].x-pp[a].x)*(pp[b].x-pp[a].x)+(pp[b].y-pp[a].y)*(pp[b].y-pp[a].y); s[cnt++]=(pp[c].x-pp[a].x)*(pp[c].x-pp[a].x)+(pp[c].y-pp[a].y)*(pp[c].y-pp[a].y); s[cnt++]=(pp[d].x-pp[a].x)*(pp[d].x-pp[a].x)+(pp[d].y-pp[a].y)*(pp[d].y-pp[a].y); s[cnt++]=(pp[c].x-pp[b].x)*(pp[c].x-pp[b].x)+(pp[c].y-pp[b].y)*(pp[c].y-pp[b].y); s[cnt++]=(pp[d].x-pp[b].x)*(pp[d].x-pp[b].x)+(pp[d].y-pp[b].y)*(pp[d].y-pp[b].y); s[cnt++]=(pp[d].x-pp[c].x)*(pp[d].x-pp[c].x)+(pp[d].y-pp[c].y)*(pp[d].y-pp[c].y); sort(s,s+6);//以上代码就是在求这四个点构成的边的长度,如果是正方形,那么排序后前四个大小一样,最后后两个大小一样 if(s[0]==s[1]&&s[2]==s[1]&&s[2]==s[3]&&s[4]==s[5]&&s[4]!=s[3])return true; return false;}int main(){ int t,i,j,n,k,l,cnt; while(scanf("%d",&n)!=EOF) { cnt=0; for(i=0; i<n; i++) scanf("%d%d",&pp[i].x,&pp[i].y); for(i=0; i<n; i++) for(j=i+1; j<n; j++) for(k=j+1; k<n; k++) for(l=k+1; l<n; l++) if(judge(i,j,k,l))cnt++; printf("%d\n",cnt); } return 0;}
阅读全文
0 0
- hdu 5365 计算几何 给几个点判断是否为正方形
- hdu 5533 计算几何 判断是否为正方形
- hdu 5206 Four Inages Strategy【计算几何】【判断空间正方形】
- 判断几个点是否在一条直线上(计算几何)
- 杭电 hdu 5563(计算几何)(思维)(判断是否为五角星)
- HDU - 4007 Dave (模拟&技巧)数学几何正方形最多可圈几个点
- 计算几何之判断点是否在线段上
- 计算几何---判断点是否在线段上
- 计算几何----判断点是否在一个矩形内
- 计算几何 模板 (判断点是否在线段上)
- (计算几何)判断一个点是否在线段上
- poj 1584 计算几何 (点到线段距离+判断点是否在多边形内+判断多边形是否为凸包)
- 【计算几何初步-判断是否凸多边形】【HDU2108】Shape of HDU
- hdu5365 判断四个点是否构成正方形
- zoj 2540 判断是否为正方形
- 五周 项目1 扩展 计算矩形面积 并判断该矩形是否为正方形
- POJ2002Squares【求点集中正方形的个数 计算几何+Hash】
- 计算几何----判断空间点是否在一个四面体(tetrahedron)内部
- Java实践(四)---进阶笔记之二
- 商务谈判
- The Useless Toy(水题 暴力枚举)
- cookie和jsp的简介
- 【笨鸟先飞】Java重新学习日记7---高级数组之集合
- hdu 5365 计算几何 给几个点判断是否为正方形
- Codeforces 835 D Palindromic characteristics(区间DP)
- Qt一步步搭建TcpServer1——封装QTcpServer,QTcpSocket
- 仿饿了么搜索页面特效
- 指针数组实现字符排序
- Java常用类及其方法(五)Character
- RXD and math HDU
- 英文字体
- JS动态的生成表格