NSFZOJ #6015. 【NOIP2017校内模拟-5】四轮车

来源:互联网 发布:悖论知乎 编辑:程序博客网 时间:2024/04/29 13:10

NSFZOJ #6015. 【NOIP2017校内模拟-5】四轮车

题目描述

在地图上散落着 nnn 个车轮,小J想用它们造一辆车。要求如下:

  • 一辆车需要四个车轮,且四个车轮构成一个正方形;

  • 车轮不能移动

你需要计算有多少种造车的方案

两个方案不同当且仅当所用车轮不全相同,坐标相同的两个车轮视为不同车轮。

输入格式

第一行一个整数 nnn

接下来 nnn 行,每行两个整数 x,yx, yx,y,表示在(x,y)(x,y)(x,y) 处有一个车轮

输出格式

一行一个整数,表示方案数

样例

样例输入 1

90 01 02 00 21 22 20 11 12 1

样例输出 1

6

数据范围与提示

对于 30%30\%30% 的数据满足: n≤30n \le 30n30

对于 100%100\%100% 的数据满足:1≤n≤10001 \le n \le 10001n1000,∣x∣,∣y∣≤20000\left|x\right|, \left|y\right| \le 20000x,y20000


很水的一道几何题:直接用lrj老师的向量法,也就是:选两个点,计算向量,将向量向固定方向旋转90度(注意是固定方向,否则一个正方形会被计算4次,同时代码复杂度大幅上升),计算另外两个点的坐标,用map(后来发现multiset更快?)存下所有点的坐标,然后就水掉了。

一开始想用vector数组存下所有点,然后lowerbound查找,感觉和map等价,后来偷懒写了map,竟然RE?!原来是有负坐标,我的vector忘了注释掉了。。(滑稽

这里也能看出map的优越性。。


代码

原创粉丝点击