NOI 3.5 哈希 1807:正方形

该博客探讨了如何利用哈希数据结构解决NOI比赛中关于计算正方形数量的问题。通过分析正方形对角线上的点,利用几何关系计算其他点并检查它们是否存在于哈希映射中,从而高效地找出所有正方形。博主提供了C++ _map 和 Java HashSet两种实现方式,并强调了Java实现中重写hashCode和equals方法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目来源:

http://noi.openjudge.cn/ch0305/1807/

http://poj.org/problem?id=2002

 

1807:正方形

总时间限制8000ms    单个测试点时间限制4000ms   内存限制65536kB

描述

给出平面上一些点的坐标,统计由这些点可以组成多少个正方形。注意:正方形的边不一定平行于坐标轴。

输入

输入包括多组测试数据。每组的第一行是一个整数n (1 <= n <= 1000),表示平面上点的数目,接下来n行,每行包括两个整数,分别给出一个点在平面上的x坐标和y坐标。输入保证:平面上点的位置是两两不同的,而且坐标的绝对值都不大于20000。最后一组输入数据中n = 0,这组数据表示输入的结束,不用进行处理。

输出

对每组输入数据,输出一行,表示这些点能够组成的正方形的数目。

样例输入

4
1 0
0 1
1 1
0 0
9
0 0
1 0
2 0
0 2
1 2
2 2
0 1
1 1
2 1
4
-2 5
3 7
0 0
5 2
0

样例输出

1
6
1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值