(哈希)Squares (p2002)
来源:互联网 发布:淘宝psd素材免费下载 编辑:程序博客网 时间:2024/06/05 07:00
这个要注重二分的查找,,。先是二分查找的方法,
#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<vector>#include<cmath>#include<set>#include<cstring>using namespace std;#define N 1001struct my{int x,y;bool operator<(my b){if (b.x!=x)return x<b.x;else return y<b.y;}bool operator==(my b){if (b.x==x&&b.y==y)return true;elsereturn false;}void put(){cout<<x<<' '<<y<<" ";}}p[N];int n;bool cmp(my a,my b){if (a.y!=b.y)return a.y<b.y;return a.x<b.x;}bool find (my a){int i,j,k;int s=0;int m;int e=n-1;while (s<=e){m=(e+s)/2;if (p[m]==a){return true;}else if (p[m].x>a.x||(p[m].x==a.x&p[m].y>a.y)){e=m-1;}elses=m+1;}return false;}int main(){freopen("in.txt","r",stdin);int i,j,k;while (cin>>n,n){for (i=0;i<n;i++){cin>>p[i].x>>p[i].y;}sort(p,p+n);int ans=0; my a,b;for (i=0;i<n;i++){for (j=i+1;j<n;j++){a.x=p[i].y-p[j].y+p[i].x;a.y=p[j].x-p[i].x+p[i].y;b.x=p[i].y-p[j].y+p[j].x;b.y=p[j].x-p[i].x+p[j].y;if (find(a)&&find(b))ans++;}}cout<<ans/2<<endl;}return 0;}
Squares
Time Limit: 3500MS Memory Limit: 65536KTotal Submissions: 11803 Accepted: 4319
Description
A square is a 4-sided polygon whose sides have equal length and adjacent sides form 90-degree angles. It is also a polygon such that rotating about its centre by 90 degrees gives the same polygon. It is not the only polygon with the latter property, however, as a regular octagon also has this property.
So we all know what a square looks like, but can we find all possible squares that can be formed from a set of stars in a night sky? To make the problem easier, we will assume that the night sky is a 2-dimensional plane, and each star is specified by its x and y coordinates.
So we all know what a square looks like, but can we find all possible squares that can be formed from a set of stars in a night sky? To make the problem easier, we will assume that the night sky is a 2-dimensional plane, and each star is specified by its x and y coordinates.
Input
The input consists of a number of test cases. Each test case starts with the integer n (1 <= n <= 1000) indicating the number of points to follow. Each of the next n lines specify the x and y coordinates (two integers) of each point. You may assume that the points are distinct and the magnitudes of the coordinates are less than 20000. The input is terminated when n = 0.
Output
For each test case, print on a line the number of squares one can form from the given stars.
Sample Input
41 00 11 10 090 01 02 00 21 22 20 11 12 14-2 53 70 05 20
Sample Output
161
- (哈希)Squares (p2002)
- 洛谷P2002 消息扩散(tarjan)
- poj_2002 Squares(哈希)
- Tyvj P2002 扑克牌
- 洛谷 P2002 消息扩散
- 杭电acm P2002
- POJ2002《Squares》方法:哈希
- Squares - POJ 2002 哈希
- Squares - POJ 2002 哈希
- POJ 2002 Squares 哈希
- poj 2002 Squares 哈希
- POJ 2002 Squares 哈希
- POJ2002 Squares(hash)
- poj2002 Squares(hash)
- Counting Squares(1264)
- Squares
- Squares
- Squares
- hibernate (SQLQuery)query.setResultTransformer
- accept()函数
- MIME("Multipurpose Internet Mail Extensions" 多功能Internet 邮件扩充服务)
- 博客之旅开始!!
- 菜鸟写第一个系统文档
- (哈希)Squares (p2002)
- 【windows8开发】javascript开发Metro风格App
- window 性能监视器
- 上下位机进行轮询
- Erlang那些事--谈古论今之开篇
- UIWebView加载Loading...两种方法
- hibernate对象关系映射“之”延迟加载之get、load方法的区别
- Programming .NET Components 2nd 学习笔记(四)
- 08