poj 2002

Data+AI新玩法:Text2SQL让数据查询变得如此简单! 你是不是也遇到过这种情况?明明手头有海量数据,却因为SQL这道“门槛”,让分析和决策变得复杂和拖沓。你可能想着:“要是我能直接用自然语言和数据库对话,那该多好!你不是一个人在这样想,Text2SQL技术正是为了帮你摆脱这一困境而诞生的。 阅读详情

二分查找一个点是否存在,用set无法避免素数陷阱,无法解决负数取模问题,用map也无法解决。
只能hash或者二分

#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>

#define INF 0x3f3f3f3f
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define l(x) ((x)<<1)
#define r(x) ((x)<<1|1)
#define lowbit(x) ((x)&(-(x)))
#define abs(x) ((x)>=0?(x):(-(x)))
#define ms(a,b) memset(a,b,sizeof(a))
#define NSYNC std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);

using namespace std;

struct node {
	int x, y;
	bool operator < (const node &p) const {
		if (x == p.x) return y < p.y;
		return x < p.x;
	}
	bool operator == (const node &p) const {
		return x == p.x && y == p.y;
	}
};

node demo[1111];

bool check(const node &target, int len) {
	int l = 0, r = len, mid;
	while (l <= r) {
		mid = (l + r) >> 1;
		if (target == demo[mid]) return true;
		else if (target < demo[mid]) r = mid - 1;
		else l = mid + 1;
	}
	return false;
}

int main() {
	int n, ans;
	while (scanf("%d", &n) ,n) {
		for (int i = 0; i < n; i++) 
			scanf("%d%d", &demo[i].x, &demo[i].y);
		sort(demo, demo + n);
		ans = 0;
		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j < n; j++) {
				node tmp1, tmp2;
				tmp1.x = demo[i].x + demo[i].y - demo[j].y;
				tmp1.y = demo[i].y - demo[i].x + demo[j].x;
				tmp2.x = demo[j].x + demo[i].y - demo[j].y;
				tmp2.y = demo[j].y - demo[i].x + demo[j].x;
				if (check(tmp1, n) && check(tmp2, n)) ans++;
			}
		}
		printf("%d\n", ans >> 1);
	}
	return 0;
}
【EtherCAT实践篇一】TwinCAT 3安装、使用 FULL(XAE)安装包:包含了XAR的功能,并能进行多种语言的编程和硬件组态,通常安装在编程电脑上;XAR安装包:包含了ADS的功能,是实时运行环境,对 TwinCAT 模块进行加载、执行、管理、实时运行与调用,通常安装在PLC中;RM安装包:在装了高版本的TwinCAT 3后,发现PLC中的TwinCAT版本较低,就需要安装相应低版本的RM安装包切换版本使用(注:4024无法使用RM安装包切换到低于4022的版本,如4020/4018/4016版本。 阅读详情

相关推荐

POJ2002-Squares

北大POJ2002-Squares 解题报告+AC代码

POJ 2002 Squares 数学 + 必须hash

http://poj.org/problem?id=2002 只能说hash比二分快很多。随便一个hash函数都可以完爆二分。 判断是否存在正方形思路如下: 1、枚举任意两个点,作为正方形的一条边,那么,整个正方形就确定了,有两个方向。 因为, 设枚举的坐标为(x1, y1) & (x2, y2),所求的坐标是和x1,y1这个点相连,那么有方程如下。 1、垂直,向量积是0 2...

weixin_30466421的博客 133

igdumdim32.dll

系统依赖DLL动态库

POJ 2002 快速查找

这是一道几何+快速查找的题目。 根据扩展方向的不同,主要有两种坐标的形式。我们只需要选择想一个方向的扩展,因为我们需要枚举所有的节点。但是这要做还是会有重复的,根据AB求CD坐标和根据AD求BC坐标,其实这两种确定的是一个正方形,所以最后的结果需要除以2。     另,枚举两个点,求得另外两个点,判断求出的这两个点是否在给定的点集中。我使用的是二分查找策略,首先需要对坐标先按照x排序,

陈氏春秋 467

poj_2002 哈希

题意:给定一堆点,判断能构成多少个正方形 枚举前两个点,根据前两个点推算出后两个点,看后两个点在不在表中,若在,ans++,记得最后ans除以4,多算了4倍。 code: #include #include using namespace std; const int HASH_BASE = 1007; int n; int map[1000][2]; int ha

在路上的学习者 561

POJ 2002 Squares

题目链接:https://vjudge.net/problem/POJ-2002 题目大意   多组数据,每组给定 n 个不同的点,问从这 n 个点中选 4 个,使之能连成正方形,有多少种不同的选法? 分析   思路是枚举 2 个点,然后计算出可能的另外两个点,看它们存不存在。   最优解应该是用哈希表(O(n2))做,不过POJ万年不更新,都不能用 unordered_map...

weixin_30646315的博客 137

POJ - 2002(静态哈希链表找正方形)

POJ - 2002(静态哈希链表找正方形) 第一次做OJ,卡了好久, 稍微总结下. 原理 注意如果正方形有两个点是整数, 余下的两个点一定是整数. 计算公式如下: 已知:(x1,y1),(x2,y2)(x1,y1) ,(x2,y2) 则: x3=x1+(y1−y2)y3=y1−(x1−x2)x3=x1+(y1-y2) \quad y3= y1-(x1-x2) x4=x2+(

leonhe27的博客 698

[POJ2002]Squares【平面几何】

[POJ2002]Squares 题目大意 每组数据给你一个平面,平面上有N个点,选取其中4个点使之组成一个正方形(不重复,不一定平行于x,y轴),问你有几种方法? 解题报告 我们知道如果确定三个点,就能确定一个正方形。确定两个点就能确定两个正方形,且这两个正方形对称,对称轴是过两个点的直线。那么我们就枚举两个点,剩下两个点就能推出来,然后用二分...

aiweiluan5095的博客 183

poj 2002 Squares,hash

poj 2002 Squares 给出n个点,问能组成多少个正方形? 题解: 先把每个点hash 然后枚举两点(即枚举正方形的一条边),然后通过三角形全等,可以推出正方形的另外两点,在hash表里查找这两点看是存在,存在则 Cnt +1。 最后 answer = Cnt/4 //因为同一正方形都统计了4次。 #include #include #in

天亮说晚安 1714

二分 poj2002 Squares

很有意义的一道二分题 题意:给出点,问有多少个正方形 因为n 很容易就想到枚举正方形的两个点,那么可以通过这两个点可以得到对应的另外两个点,那么如何验证这两个点是否存在呢 当然会想到二分。先将坐标读入后排序好,然后用二分查询是否存在就可以了 难点:正方形并不一定是平行坐标轴的,可能是斜的,所以如何用两个已知点求得另外两个点呢? 这里有个公式可以用来变换 d

qwb的博客 1686

POJ2002Squares

http://poj.org/problem?id=2002 题意 : 就是给你很多点的坐标,任取四个,看能组成多少个不同的正方形,相同的四个点,不同顺序构成的正方形视为同一正方形。 思路 : 就是一个简单的枚举,但是你要是四个点四个点的枚举因为数据量到1000,所以肯定会超时的,就两个点两个点枚举,再去判断另外两个点是否存在就可以了,百度了才知道有这样一个公式,知道两个点(x1,y1)(x2...

weixin_30433075的博客 141

POJ - 2002 - Squares (hash算法

题目:poj-2002 题意:给一些点的坐标,问最多可以构成多少个正方形。 直接四个点四个点地枚举肯定超时的,不可取。 普遍的做法是:先枚举两个点,通过数学公式得到另外2个点,使得这四个点能够成正方形。然后检查散点集中是否存在计算出来的那两个点,若存在,说明有一个正方形。 但这种做法会使同一个正方形按照不同的顺序被枚举了四次,因此最后的结果要除以4. 题解: 已知: (x1,y1) ...

Rotepad的博客 443

POJ - 2002)Squares

POJ - 2002)Squares A square is a 4-sided polygon whose sides have equal length and adjacent sides form 90-degree angles. It is also a polygon such that rotating about its centre by 90 degrees gives the same po

The wind of freedom blows 305

POJ 2002 Squares 哈希

题目链接:http://poj.org/problem?id=2002 1 #include <stdio.h> 2 #include <string.h> 3 4 const int prime = 999983; 5 6 struct Hash_table 7 { 8 int x, y; 9 struct...

weixin_30596735的博客 66

POJ2002 数组Hash方法(代码以及一些关键问题的解释说明)

Q1:知道两点坐标,怎么获得可以构成正方形的另外两点坐标? ------ 利用全等三角形,可以找到向上(斜)平移或者向下(斜)平移的直线构成正方形,图如下: 已知: (x1,y1) (x2,y2)则: x3=x1+(y1-y2) y3= y1-(x1-x2) x4=x2+(y1-y2) y4= y2-(x1-x2) 或 ...

眼里一片海 613

poj 2002 (hash map)

Squares Time Limit: 3500 MSMemory Limit: 65536 KB 64-bit integer IO format: %I64d , %I64u Java class name: Main [Submit][Status][Discuss] Description A square is a 4-sided polygon who

ilblue的博客 382

poj2002 STL set

题意:给n个点,问最多能构成多少个正方形?思路:枚举两个点,计算组成正方形所需的另外两个点,若这两个点在所给的点集合中,则cnt++,最后的答案为cnt/2;(set 里 count() 返回整数,且只为 0 或 1 find() 返回迭代器)//#include&lt;bits/stdc++.h&gt; #include&lt;iostream&gt; #include&lt;set&gt; ...

紫芝的博客 416
上一篇: poj 2001(字典树)
下一篇: poj 2010
FawkesLi
博客等级 码龄8年 21粉丝 170原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值