CodeForces 660D Number of Parallelograms
来源:互联网 发布:魔兽548数据库 编辑:程序博客网 时间:2024/06/05 22:51
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.
Example
input
4
0 1
1 0
1 1
2 0
output
1
题目大意:给出一堆点,求出这些点中能组成平行四边形的个数,且题目要求没有三个点在同一直线上。
思路分析:判断平行四边形的方法有两种,一种是两边平行且相等,另一种就是中点相等。如果对角线上的两点的中点坐标在同一点,即满足(x1+x2)/2==(x3+x4)/2&&(y1+y2)/2==(y3+y4)/2条件,则说明这四个点能够构成一个平行四边形。首先求出任意两点之间的中点,再使用map,即可快捷求出每个中点所对应的平行四边形个数。
#include <cstdio>#include <map>#include <iostream>using namespace std;const int maxn=2000+5;pair<long long ,long long>b[maxn];map<pair<int,int>,int>sum;int main(void){ int n; cin>>n; for(int i=0;i<n;i++) scanf("%d%d",&b[i].first,&b[i].second); int count=0; for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) { int x=b[i].first+b[j].first; int y=b[i].second+b[j].second; count+=sum[make_pair(x,y)]++;//记录相同中点的个数,count转化为平行四边形的个数。 } cout<<count<<endl;}
- codeforces 660D. Number of Parallelograms
- CodeForces 660D Number of Parallelograms
- Codeforces 660D Number of Parallelograms
- Codeforces 660D Number of Parallelograms 【思维】
- CodeForces 660D Number of Parallelograms
- CodeForces 660D Number of Parallelograms
- CodeForces 660D. Number of Parallelograms【模拟】
- codeforces 660D - Number of Parallelograms
- CodeForces 660D Number of Parallelograms
- CodeForces 660D Number of Parallelograms(水题)
- Codeforces 660D Number of Parallelograms【平行四边形个数】
- Number of Parallelograms CodeForces 660D 思维题
- CodeForces 660D Number of Parallelograms [想法题]
- D. Number of Parallelograms
- D. Number of Parallelograms
- D. Number of Parallelograms
- Number of Parallelograms CodeForces
- Educational Codeforces Round 11-D. Number of Parallelograms
- Solr与Tomcat配置
- NodeJs之Koa2使用
- HDU 2089 不要62 预处理+前缀和
- 剑指Offer——(42)和为S的连续正数序列
- 《PCL点云库学习&VS2010(X64)》Part 42 OCtreeViewer
- CodeForces 660D Number of Parallelograms
- 【软件工程】你的软件给谁用
- codeforces GYM 101431B (STL)
- c++类型转换函数的麻烦及解决方法
- 7.1面向对象(继承中成员方法关系,final关键字,多态,抽象类,接口)
- 牛客网剑指offer编程题——从上往下打印二叉树(Java)
- 初学JavaScript02
- HDU 4614 Vases and Flowers (二分查找+线段树区间更新)
- 初学51单片机(网上教程http://www.51zxw.net/list.aspx?cid=473)