n个点

求其中有几个正方形

n<1000

暴力4个点就不行了

大概2个点还可以

根基(x*x+y*y)%素数 hash 一下

告诉你2个点求 另外2个点 画个图推一下

重复要/2;

 #include<stdio.h>
#include<algorithm>
#include<vector> using namespace std; #define mod 10007
struct point
{
int x,y; }x[]; vector<point>hash[mod]; void insert(int a)
{
int h=(x[a].x*x[a].x+x[a].y*x[a].y)%mod;
hash[h].push_back(x[a]);
}
bool cmp(point a,point b)
{
if(a.x==b.x)
return a.y<b.y;
return a.x<b.x;
}
bool search(int a,int b)
{
int h=(a*a+b*b)%mod;
for(int i=;i<hash[h].size();i++)
{
if(hash[h][i].x==a&&hash[h][i].y==b)
return true;
}
return false;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n)
{
for(int i=;i<mod;i++)
hash[i].clear(); for(int i=;i<=n;i++)
{
scanf("%d%d",&x[i].x,&x[i].y);
insert(i);
}
int cnt=;
sort(x+,x+n+,cmp);
for(int i=;i<=n;i++)
{
for(int j=i+;j<=n;j++)
{
int x1,y1,x2,y2;
x1=x[i].x-(x[j].y-x[i].y);
y1=x[i].y+(x[j].x-x[i].x);
x2=x[j].x-(x[j].y-x[i].y);
y2=x[j].y+(x[j].x-x[i].x);
if(search(x1,y1)&&search(x2,y2))
cnt++; }
}
printf("%d\n",cnt/);
} return ;
}

哈希 poj 2002的更多相关文章

  1. POJ 2002 Squares 解题报告(哈希 开放寻址 & 链式)

    经典好题. 题意是要我们找出所有的正方形.1000点,只有枚举咯. 如图,如果我们知道了正方形A,B的坐标,便可以推测出C,D两点的坐标.反之,遍历所有点作为A,B点,看C,D点是否存在.存在的话正方 ...

  2. POJ 2002 Squares 哈希

    题目链接: http://poj.org/problem?id=2002 #include <stdio.h> #include <string.h> ; struct Has ...

  3. poj 2002 Squares 几何二分 || 哈希

    Squares Time Limit: 3500MS   Memory Limit: 65536K Total Submissions: 15137   Accepted: 5749 Descript ...

  4. POJ 2002 统计正方形 HASH

    题目链接:http://poj.org/problem?id=2002 题意:给定n个点,问有多少种方法可以组成正方形. 思路:我们可以根据两个点求出对应正方形[有2个一个在两点左边,一个在两点右边] ...

  5. POJ 2002 Squares 几何, 水题 难度: 0

    题目 http://poj.org/problem?id=2002 题意 已知平面内有1000个点,所有点的坐标量级小于20000,求这些点能组成多少个不同的正方形. 思路 如图,将坐标按照升序排列后 ...

  6. 哈希—— POJ 3349 Snowflake Snow Snowflakes

    相应POJ题目:点击打开链接 Snowflake Snow Snowflakes Time Limit: 4000MS   Memory Limit: 65536K Total Submissions ...

  7. POJ 2002 Squares 数学 + 必须hash

    http://poj.org/problem?id=2002 只能说hash比二分快很多.随便一个hash函数都可以完爆二分. 判断是否存在正方形思路如下: 1.枚举任意两个点,作为正方形的一条边,那 ...

  8. [字符哈希] POJ 3094 Quicksum

    Quicksum Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16488   Accepted: 11453 Descri ...

  9. 哈希 poj 3349

    n个雪花 判断有没有相同的 正的和倒的相同都可以 哈希一下  比的少了就可以 #include<stdio.h> #include<algorithm> #include< ...

随机推荐

  1. linux下安装python

    在Linux下安装Python的操作相当简单,按如下步骤操作即可: 命令: wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgzt ...

  2. 给VIM安装插件。让ubuntu的vim强大起来

    简易安装方法: 打开终端,执行下面的命令就自动安装好了: wget https://raw.github.com/ma6174/vim/master/setup.sh -O ma6174_vim_se ...

  3. View.inflate和LayoutInflater的inflate方法区别

    平时ListView加载item中,adapter的getView方法中,我们经常用到: LayoutInflater.from(mContext).inflate(R.layout.it ,pare ...

  4. JavaScript Number 对象

    JavaScript Number 对象 Number 对象 Number 对象是原始数值的包装对象. Number 创建方式 new Number(). 语法 var num = new Numbe ...

  5. php正则表达式治疗结巴

    用正则表达式去解决结巴这个问题可以通过下面进行解决: 解决思路是: 先找到重复的不部分 用str_replace($source,$replace,$str);来进行代理 下面分两种情况,最后将这两种 ...

  6. AASM rule of scoring sleep stages using EEG signal

    Reference: AASM (2007). The AASM Manual for the Scoring of Sleep and Associated Events: Rules, Termi ...

  7. 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)

    1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

  8. ASP.NET MVC图片上传前预览

    回老家过春节,大半个月,在家的日子里,吃好睡好,人也长了3.5Kg.没有电脑,没有网络,无需写代码,工作上相关的完全放下......开心与父母妻儿过个年,那样的生活令Insus.NET现在还在留恋.. ...

  9. jquery常用代码

    转自:未找到 以下是jquery中比较常用的一些操作实现方式: $("标签名") //取html元素 document.getElementsByTagName("&qu ...

  10. 安装mint的时候提示:Not compatible with your operating system or architecture: fsevents@1.0.11

    Since fsevents is an API in OS X allows applications to register for notifications of changes to a g ...