POJ 2002 Squares(已知平面n点枚举正方形)
来源:互联网 发布:手机定时提醒软件 编辑:程序博客网 时间:2024/05/22 05:10
POJ 2002 Squares(已知平面n点枚举正方形)
http://poj.org/problem?id=2002
题意: ZOJ 2347需要修改输入输出格式
给你二维平面的n个点坐标,问你这n个点能组成多少个不同的正方形?(正方形不一定平行于坐标轴且由相同4点构成的正方形只能算一个)
分析:
我们只需要枚举(构成正方形一条边的)两个点即可以推出正方形的另外两个点的坐标.
首先我们把所有点按x优先y其次的顺序排序,然后枚举两个点(x1,y1)和(x2,y2).假设(x1,y1)和(x2,y2)构成了一个正方形的一条边,那么该正方形的另外两个点(x3,y3)和(x4,y4)有两种情况,如下图:
AC代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000+5;struct Node{ int x,y; bool operator<(const Node& rhs)const { return x<rhs.x || (x==rhs.x && y<rhs.y); }}nodes[maxn];int main(){ int n; while(scanf("%d",&n)==1 && n) { int ans=0;//正方形个数 for(int i=0;i<n;++i) scanf("%d%d",&nodes[i].x,&nodes[i].y); sort(nodes,nodes+n); for(int i=0;i<n;++i) for(int j=i+1;j<n;++j) { Node tmp;//tmp作为正方形的第3或4个点 tmp.x=nodes[i].x+nodes[i].y-nodes[j].y; tmp.y=nodes[i].y+nodes[j].x-nodes[i].x; if(!binary_search(nodes,nodes+n,tmp)) continue; tmp.x=nodes[j].x+nodes[i].y-nodes[j].y; tmp.y=nodes[j].y+nodes[j].x-nodes[i].x; if(!binary_search(nodes,nodes+n,tmp)) continue; ++ans; } printf("%d\n",ans/2);//注意这里/2 } return 0;}
0 0
- POJ 2002 Squares(已知平面n点枚举正方形)
- POJ 2002 Squares(计算几何 找正方形 hash枚举)
- poj 2002 Squares(枚举+点hash)
- POJ 2002 Squares (已知正方形对角线两点推另外两点,STL set)
- poj 2002 Squares (哈希+正方形已知相邻两点求另外两点的坐标)
- poj Squares 2002 (STL&&枚举+转换) 统计正方形的个数
- Poj 2002 Squares (正方形个数 Hash)
- POJ 2002 Squares hash求正方形个数
- poj 2002 hash(平面上若干点能够成多少正方形)
- POJ 2002 Squares 求正方形的个数,点哈希
- POJ 2002-Squares(hash拉链法-正方形个数)
- Squares(存在多少正方形,暴力枚举 )
- POJ 2002 Squares(枚举+几何)
- poj2002--Squares(n个点求正方形个数)
- poj 2202 Squares(求正方形个数)
- [算法] 已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点
- 已知6点,求两平面夹角
- WV.13-枚举-平面点
- android.grapthics.Bitmap类的详解
- Ubuntu 12.04中文输入法的安装
- 线程的同步和异步
- hdu2035(快速幂取余)人见人爱A^B
- HDU 1058 Humble Numbers
- POJ 2002 Squares(已知平面n点枚举正方形)
- 动态添加fragment与手势切换(三)(android)
- Android 用一个监听器实现多个监听
- HDU5023A Corrupt Mayor's Performance Art (2014 ACM/ICPC Asia Regional Guangzhou Online)
- hashmap,treemap,hashtable
- 还是hdu2222
- oracle触发器
- ASI自定义post请求
- 免费图标:30款彩色圆角图标设计