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

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

题目描述

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

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

  • 车轮不能移动

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

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

输入格式

第一行一个整数 nnn

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

输出格式

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

样例
样例输入 1
9
0 0
1 0
2 0
0 2
1 2
2 2
0 1
1 1
2 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的优越性。。


代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值