POJ 2002 Squares(枚举+几何)
来源:互联网 发布:js只让页面刷新一次 编辑:程序博客网 时间:2024/06/14 11:14
思路:先把点排序(为了减少枚举量),然后每次枚举两个点,利用公式计算出另外两个点,在set里面判断存不存在,如果存在就可以构成正方形,这样的计算,一个正方形会被计算两次,所以答案除2即可
代码:
#include <cstdio>#include <cstring>#include <algorithm>#include <set>using namespace std;typedef long long ll;typedef pair<int, int> pii;int n;const int N = 1005;set<pii> vis;pii p[N];bool judge(int i, int j) { if (vis.find(make_pair(p[i].second - p[j].second + p[i].first, p[j].first - p[i].first + p[i].second)) == vis.end()) return false; if (vis.find(make_pair(p[i].second - p[j].second + p[j].first, p[j].first - p[i].first + p[j].second)) == vis.end()) return false; return true;}int main() { while (~scanf("%d", &n) && n) { vis.clear(); for (int i = 0; i < n; i++) { scanf("%d%d", &p[i].first, &p[i].second); vis.insert(make_pair(p[i].first, p[i].second)); } sort(p, p + n); ll ans = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (judge(i, j)) ans++; } } printf("%lld\n", ans / 2); } return 0;}
0 0
- POJ 2002 Squares(枚举+几何)
- POJ 2002 Squares(计算几何 找正方形 hash枚举)
- poj 2002 Squares(枚举+点hash)
- POJ 2002 Squares hash/计算几何
- poj 3347 Kadj Squares(计算几何)
- poj 3347 Kadj Squares(计算几何)
- POJ2002-Squares-hash+枚举+几何
- Kadj Squares - POJ 3347 几何
- POJ 3347 Kadj Squares <几何>
- POJ 2002 Squares 几何 + 二分搜索 或 hash
- POj 2002 UVALive - 3047 C - Squares 【计算几何+二分求解】
- POJ 3347 Kadj Squares (几何+线段树)
- POJ 3347 && HDU 2417 Kadj Squares(计算几何)
- poj Squares 2002 (STL&&枚举+转换) 统计正方形的个数
- 【POJ】2002 - Squares(暴力枚举 & 双关键字二分查找)
- POJ 2002 Squares(已知平面n点枚举正方形)
- POJ 2002 - Squares(hash)
- POJ 2002 Squares(hash)
- Android开发:shape和selector和layer-list的(详细说明)
- 写文本函数
- LeetCode Combination Sum
- 选择排序法
- Oracle 10.2.0.5 + OFS 3.4.2 双节点集群
- POJ 2002 Squares(枚举+几何)
- 杨辉三角
- 《C语言函数大全》 摘录
- php实现将文件写入数据库、从数据库读取文件(防止图片上传漏洞)
- POJ 3694 Network (求割边 + LCA)
- 什么是公有IP地址?什么是私有IP地址?及各自范围介绍
- MFC单选按钮的使用
- 从内存中访问数据的过程
- 【java编程】IO类之复写BufferedInputStream中read方法