POJ 2002 二分 计算几何
根据正方形对角的两顶点求另外两个顶点公式:
x2 = (x1+x3-y3+y1)/2; y2 = (x3-x1+y1+y3)/2;
x4= (x1+x3+y3-y1)/2; y4 = (-x3+x1+y1+y3)/2;
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1000+5;
struct Node
{
int x,y;
bool operator<(const Node& rhs)const
{
return x<rhs.x || (x==rhs.x && y<rhs.y);
}
}nodes[maxn]; int main()
{
int n;
while(scanf("%d",&n)==1 && n)
{
int ans=0;//正方形个数
for(int i=0;i<n;++i)
scanf("%d%d",&nodes[i].x,&nodes[i].y);
sort(nodes,nodes+n); for(int i=0;i<n;++i)
for(int j=i+1;j<n;++j)
{
Node tmp;//tmp作为正方形的第3或4个点
tmp.x=nodes[i].x+nodes[i].y-nodes[j].y;
tmp.y=nodes[i].y+nodes[j].x-nodes[i].x;
if(!binary_search(nodes,nodes+n,tmp)) continue;
tmp.x=nodes[j].x+nodes[i].y-nodes[j].y;
tmp.y=nodes[j].y+nodes[j].x-nodes[i].x;
if(!binary_search(nodes,nodes+n,tmp)) continue;
++ans;
}
printf("%d\n",ans/2);
}
return 0;
}
POJ 2002 二分 计算几何的更多相关文章
- POJ - 2018 二分+单调子段和
依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...
- POJ - 1905 Expanding Rods(二分+计算几何)
http://poj.org/problem?id=1905 题意 一根两端固定在两面墙上的杆,受热后变弯曲.求前后两个状态的杆的中点位置的距离 分析 很明显需要推推公式. 由②的限制条件来二分角度, ...
- POJ 2002 Squares【值得摸索的一道二分+点旋转】
id=2002">Squares 很好的一道二分,事实上本来我是没有思路的,看了基神的题解之后才似乎明确了点. 题意:给出最多有1000个点,问这些点能够组成多少个正方形 分析:先想想 ...
- poj 2002 Squares 几何二分 || 哈希
Squares Time Limit: 3500MS Memory Limit: 65536K Total Submissions: 15137 Accepted: 5749 Descript ...
- POJ 2002 Squares 数学 + 必须hash
http://poj.org/problem?id=2002 只能说hash比二分快很多.随便一个hash函数都可以完爆二分. 判断是否存在正方形思路如下: 1.枚举任意两个点,作为正方形的一条边,那 ...
- poj 3621 二分+spfa判负环
http://poj.org/problem?id=3621 求一个环的{点权和}除以{边权和},使得那个环在所有环中{点权和}除以{边权和}最大. 0/1整数划分问题 令在一个环里,点权为v[i], ...
- POJ 2549 二分+HASH
题目链接:http://poj.org/problem?id=2002 题意:给定一个n个数字组成的序列,然后求出4个数使得a+b+c=d,求d的最大值.其中a,b,c,d要求是给定序列的数,并且不能 ...
- POJ 2002 统计正方形 HASH
题目链接:http://poj.org/problem?id=2002 题意:给定n个点,问有多少种方法可以组成正方形. 思路:我们可以根据两个点求出对应正方形[有2个一个在两点左边,一个在两点右边] ...
- POJ 3061 (二分+前缀和or尺取法)
题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...
随机推荐
- XRDP freerdp
服务器上 freerdp 桌面上有XRDP
- Linux_搭建NFS服务(基础)
[RHEL8]-NFSserver :[Centos7]-NFSclient !!!测试环境我们首关闭防火墙和selinux(NFSserver和NFSclient都需要) [root@localho ...
- Linux进阶之补充知识篇
一.Linux系统的主要特点: 开放性:指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准 多用户:允许多个用户从相同或不同终端上同时使用同一台计算机 多任务:它是指计算机同时执行多个程 ...
- SpringBoot 上传文件如何获取项目工程路径
上传文件时,需要将上传的文件存放于工程路径中,以便前端能够获取文件资源,那如何获取工程路径呢? //获取 SpringBoot 工程中 static 的绝对路径 String serverpath= ...
- mariadb10安装
Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB 添加安装源或是从官网下载安装包https://downloads. ...
- JMicro微服务Hello World
概述 JMicro是本人开发的基于Java实现的微服务框架,前两天发布0.0.3正式版本,并已发布到maven中央仓库. 项目源码github:https://github.com/mynewworl ...
- Jmeter- 笔记10 - 在GUI生成html报告
步骤1.在聚合报告,浏览一个存放jtl文件的路径,输入不存在的jtl文件,确定后会出现如下图弹窗,不用理会,关掉 步骤2.运行脚本 步骤3.打开工具 -> Generate HTML repor ...
- C ++变量,文字和常量
C ++变量,文字和常量 本文将借助示例来学习C ++中的变量,文字和常量. C ++变量 在编程中,变量是用于保存数据的容器(存储区). 为了指示存储区域,应该为每个变量赋予唯一的名称(标识符).例 ...
- Minkowski修剪
Minkowski修剪 Minkowski修剪 Class MinkowskiEngine.MinkowskiPruning 从MinkowskiEngine.SparseTensor中删除指定的坐标 ...
- Postman之newman的安装
一.newman简介:newman是为Postman而生,专门用来运行Postman编写好的脚本:使用newman,你可以很方便的用命令行来执行postman collections. 二.newma ...