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

题意 : 就是给你很多点的坐标,任取四个,看能组成多少个不同的正方形,相同的四个点,不同顺序构成的正方形视为同一正方形。

思路 : 就是一个简单的枚举,但是你要是四个点四个点的枚举因为数据量到1000,所以肯定会超时的,就两个点两个点枚举,再去判断另外两个点是否存在就可以了,百度了才知道有这样一个公式,知道两个点(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)

据说是通过三角形全等证出来的

不过最后的结果要除以4,因为你每个点都枚举到了,所以就重复的加了一个正方形4次

#include<cstdio>
#include<cstring>
#include<cstdio>
using namespace std ;
const int maxn = ;
bool vis[maxn<<][maxn<<];//这个要定义成bool类型的,定义成int类型的会超内存
int ch[maxn],sh[maxn] ;
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
memset(vis,,sizeof(vis)) ;
int a,b ;
int cnt = ;
for(int i = ; i <= n ; i++)
{
scanf("%d %d",&a,&b) ;
ch[i] = a ;
sh[i] = b ;
vis[maxn+a][maxn+b] = ;//因为存在负坐标,而数组下标只能为正
}
int x1,x2,x3,x4,y1,y2,y3,y4 ;
for(int i = ; i <= n ; i++)
{
x1 = ch[i] ;
y1 = sh[i] ;
for(int j = ; j < i ; j++)
{
x2 = ch[j] ;
y2 = sh[j] ;
x3=x1+(y1-y2);
y3= y1-(x1-x2);
x4=x2+(y1-y2);
y4= y2-(x1-x2);
if(vis[x3+maxn][y3+maxn]&&vis[x4+maxn][y4+maxn])
cnt++ ;
x3=x1-(y1-y2);
y3= y1+(x1-x2);
x4=x2-(y1-y2);
y4= y2+(x1-x2);
if(vis[x3+maxn][y3+maxn]&&vis[x4+maxn][y4+maxn])
cnt++ ;
}
}
printf("%d\n",cnt>>) ;
}
return ;
}

POJ2002Squares的更多相关文章

  1. poj2002Squares(点集组成正方形数)

    链接 可以枚举两个点,因为是正方形两外两点可以由已知求出,据说可以根据三角形全等求出下列式子,数学渣不会证... 已知: (x1,y1)  (x2,y2) 则:   x3=x1+(y1-y2)   y ...

  2. Hash (poj2002-Squares & poj3349-Snowflake Snow Snowflakes)

    //突然发现好弱,好多基础的算法竟然都不会,哈希这种经典的算法,我貌似基本没怎么做过相关的题0.0 POJ2002 题意:给n个点,问有多少组四个点能组成正方形. 题解:枚举两个点,通过公式算出另外两 ...

随机推荐

  1. virtualbox安装centos6.5碰到的问题

    今天无聊用virtualbox安装centos6.5 , 自己笔记本vm撑不住, 用公司的试试virtualbox先 安装快完成时 没有足够的内存配置kdump”(在英文界面下提示的是“insuffi ...

  2. 使用FormData上传文件、图片

    关于FormData XMLHttpRequest Level 2添加了一个新的接口  ---- FormData 利用FormData对象,可以通过js用一些键值对来模拟一系列表单控件,可以使用XM ...

  3. IIS目录下文件共享后System.IO.File.Exists返回false

    场景:在iis目录下,因为特殊需要共享一个文件夹,给到其他的技术人员访问,突然发现小小的操作,搞“大”了,使用 string path = Server.MapPath("~/file/te ...

  4. KBase使用教程

    1. SELECT * FROM EXPERT_BASEINFO WHERE (源照片='*' not 源照片 is null) and 标准一级机构='山东大学' and 当前职称='*教授' 2. ...

  5. VS2010配色方案

    http://studiostyl.es/ 导入步骤:  工具------------导入和导出设置------------导入选定的环境设置------------否,仅导入新设置--------- ...

  6. Python-Day5 常用模块学习

    一.模块介绍 通俗点说,就是把常用的一些功能单独放置到一个.py文件中,方便其他文件来调用,这样的一个文件可以称为一个模块. 模块分为三种: 自定义模块 内置标准模块(又称标准库) 开源模块 二.导入 ...

  7. xv6实验环境搭建

    安装bochs 因为要运行的是xv6,所以不能直接使用 apt-get 直接获取软件.apt-get获取到的软件不支持SMP (Symmetric Multi-Processing).因此,需要下载源 ...

  8. Xaml代码格式设置

    Xaml格式化后属性分行显示的设置方法为 找到Tools->Text Editor->Xaml->Formatting->Spacing,选择Position each att ...

  9. ORA-1653: unable to extend table SYS.AUD$

    今早运维组的同事反映有个系统功能很多地方都报错,怀疑是不是数据库有什么问题.于是登录数据库检查,通过crsctl status res -t检查,发现所有集群资源都是OK的,没有哪个资源挂掉了.于是到 ...

  10. 进程和cpu绑定

    #include<stdlib.h> #include<stdio.h> #include<sys/types.h> #include<sys/sysinfo ...