博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 2002 Squares
阅读量:4946 次
发布时间:2019-06-11

本文共 1927 字,大约阅读时间需要 6 分钟。

给出n个点,求出用这n个点可构成的正方形的个数。可以枚举两个点,求出正方形的另两个点。

然后判断这两个是否存在。我的hash公式写得比较烂,跑了1s多。

下面是求正方形剩下两点的公式:

已知: (x1,y1)  (x2,y2)

则:   x3=x1+(y1-y2)   y3= y1-(x1-x2)

x4=x2+(y1-y2)   y4= y2-(x1-x2)

x3=x1-(y1-y2)   y3= y1+(x1-x2)

x4=x2-(y1-y2)   y4= y2+(x1-x2)

/*Accepted    1724K    1047MS    C++    1713B    2012-08-24 11:46:05*/#include
#include
#include
const int MAXN = 1 << 10;const int prime = 99991;int n, ans;struct point{ int x, y;}t[MAXN];struct Hash{ point p; struct Hash *next;}h[prime + 10];int hash(point a){ return (a.x * a.x + a.y * a.y) % prime + 1;}void insert(point a){ Hash *temp = new Hash(); int key = hash(a); temp->p.x = a.x; temp->p.y = a.y; temp->next = h[key].next; h[key].next = temp;}bool exist(point a){ Hash *temp = h[hash(a)].next; while(temp) { if(temp->p.x == a.x && temp->p.y == a.y) return true; temp = temp->next; } return false;}void Read(){ int i; for(i = 0; i < n; i ++) { scanf("%d%d", &t[i].x, &t[i].y); insert(t[i]); }}void cal(){ point a, b; int i, j; ans = 0; for(i = 0; i < n - 1; i ++) for(j = i + 1; j < n; j ++) { a.x = t[i].y - t[j].y + t[i].x; a.y = t[i].y - (t[i].x - t[j].x); b.x = t[j].x + t[i].y - t[j].y; b.y = t[j].y - (t[i].x - t[j].x); if(exist(a) && exist(b)) ans ++; a.x = t[i].x - (t[i].y - t[j].y); a.y = t[i].y + t[i].x - t[j].x; b.x = t[j].x - (t[i].y - t[j].y); b.y = t[j].y + t[i].x - t[j].x; if(exist(a) && exist(b)) ans ++; } ans /= 4;}int main(){ while(scanf("%d", &n), n) { memset(h, 0, sizeof h); Read(); cal(); printf("%d\n", ans); } return 0;}

 

 

转载于:https://www.cnblogs.com/Yu2012/archive/2012/08/24/2653950.html

你可能感兴趣的文章
操作系统下载路径
查看>>
网站开发 关于图片压缩 以及图片使用
查看>>
hive的count(distinct id)测试--慎用
查看>>
第九周周总结
查看>>
Logistic Regression
查看>>
8lession-基础类型转化
查看>>
FlashCS5作成SWC,在Flex4中使用(1)
查看>>
vue-cli目录结构及说明
查看>>
JS 数据类型转换
查看>>
WeQuant交易策略—RSI
查看>>
osgearth将视点绑定到一个节点上
查看>>
PHP 当前时间秒数+数值,然后再转换成时间。
查看>>
数据交互 axios 的使用
查看>>
bootloader,kernel,initrc
查看>>
Java中jshell脚本
查看>>
performSelector的方法
查看>>
redis
查看>>
BZOJ1645 [Usaco2007 Open]City Horizon 城市地平线
查看>>
配置IIS
查看>>
单例模式详解
查看>>