博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Educational Codeforces Round 11 D. Number of Parallelograms 暴力
阅读量:5051 次
发布时间:2019-06-12

本文共 1415 字,大约阅读时间需要 4 分钟。

D. Number of Parallelograms

题目连接:

Description

You are given n points on a plane. All the points are distinct and no three of them lie on the same line. Find the number of parallelograms with the vertices at the given points.

Input

The first line of the input contains integer n (1 ≤ n ≤ 2000) — the number of points.

Each of the next n lines contains two integers (xi, yi) (0 ≤ xi, yi ≤ 109) — the coordinates of the i-th point.

Output

Print the only integer c — the number of parallelograms with the vertices at the given points.

Sample Input

4

0 1
1 0
1 1
2 0

Sample Output

1

Hint

题意

平面给你n个点,问你能够组成多少个平行四边形

保证三点不共线,点都是不相同的

题解:

能够成平行四边形的两条边的东西,一定是两个相同的向量

那么我们n^2把所有向量都计算出来就好了,注意得人为的去规定一下方向什么的,然后就完了。

代码

#include
using namespace std;const int maxn = 2005;map
,int> H;pair
P[maxn];int main(){ int n;scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d%d",&P[i].first,&P[i].second); long long ans = 0; for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { pair
T; T.first=P[i].first-P[j].first; T.second=P[i].second-P[j].second; if(T.first<0)T.first=-T.first,T.second=-T.second; else if(T.second<0&&T.first==0)T.second=-T.second; ans+=H[T]; H[T]++; } } cout<

转载于:https://www.cnblogs.com/qscqesze/p/5373418.html

你可能感兴趣的文章
Swift 中的指针使用
查看>>
Swift - 使用闭包筛选过滤数据元素
查看>>
alue of type java.lang.String cannot be converted to JSONObject
查看>>
搜索引擎选择: Elasticsearch与Solr
查看>>
JAVA设计模式之简单工厂模式与工厂方法模式
查看>>
③面向对象程序设计——封装
查看>>
【19】AngularJS 应用
查看>>
Spring
查看>>
Linux 系统的/var目录
查看>>
Redis学习---Redis操作之其他操作
查看>>
WebService中的DataSet序列化使用
查看>>
BZOJ 1200 木梳
查看>>
【Linux】【C语言】菜鸟学习日志(一) 一步一步学习在Linxu下测试程序的运行时间...
查看>>
hostname
查看>>
SpringBoot使用其他的Servlet容器
查看>>
关于cookie存取中文乱码问题
查看>>
k8s架构
查看>>
select 向上弹起
查看>>
mysql 多表管理修改
查看>>
group by order by
查看>>