正方形
来源:互联网 发布:查询python版本 编辑:程序博客网 时间:2024/04/29 14:55
2:正方形
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 3500ms
- 内存限制:
- 65536kB
- 描述
- 给定直角坐标系中的若干整点,请寻找可以由这些点组成的正方形,并统计它们的个数。
- 输入
- 包括多组数据,每组数据的第一行是整点的个数n(1<=n<=1000),其后n行每行由两个整数组成,表示一个点的x、y坐标。输入保证一组数据中不会出现相同的点,且坐标的绝对值小于等于20000。输入以一组n=0的数据结尾。
- 输出
- 对于每组输入数据,输出一个数,表示这组数据中的点可以组成的正方形的数量。
- 样例输入
41 00 11 10 090 01 02 00 21 22 20 11 12 14-2 53 70 05 20
- 样例输出
161
#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<iomanip>#include<queue>#include<stack>#include<vector>#include<set>#include<map>using namespace std;struct Node{int x,y;}p[1005];int sum=0;int Hash[40005]={0};int Next[1005]={0};bool cmp(const Node&a,const Node&b){if(a.x<b.x)return true;if((a.x==b.x)&&(a.y<b.y))return true;return false;}bool Find(int x,int y){int tmp=abs(x+y);int i=Hash[tmp];while(i!=-1){if((p[i].x==x)&&(p[i].y==y))return true;i=Next[i];}return false;}int main(){int n;while(cin>>n&&n) {memset(Hash,0xff,sizeof(Hash));memset(Next,0xff,sizeof(Next));for(int i=0;i<n;++i){cin>>p[i].x>>p[i].y;}sort(p,p+n,cmp);for(int i=0;i<n;++i){int tmp=abs(p[i].x+p[i].y);Next[i]=Hash[tmp];Hash[tmp]=i;}sum=0;for(int i=0;i<n;++i){for(int j=i+1;j<n;++j){int dx=p[j].x-p[i].x;int dy=p[j].y-p[i].y;if(!Find(p[i].x+dy,p[i].y-dx))continue;if(!Find(p[j].x+dy,p[j].y-dx))continue;sum++;}}cout<<sum/2<<endl;}return 0;}
阅读全文
0 0
- 正方形
- 正方形
- 正方形
- 正方形
- 正方形
- 正方形
- 正方形
- 正方形;
- 正方形
- 正方形
- 正方形
- 正方形
- 正方形
- 正方形贴图
- 空白正方形
- 【模拟】正方形
- 2:正方形
- 画正方形
- Mybatis-表关联查询与懒加载
- Tomcat安装与环境变量的配置
- EntityFramework 4.1笔记
- 应广大群友的强烈要求
- 牛顿迭代法求平方根
- 正方形
- Spring 简单介绍
- Thrift
- windows下多线程简单demo
- USACO-Section2.3 prefix[DP]
- SSH三大框架整合步骤
- 对象的内存布局
- java中Scanner类nextLine()、next()、hasNext()等总结
- 反转单词顺序列