CodeForces 660D Number of Parallelograms [想法题]

来源:互联网 发布:创佳39寸网络电视 编辑:程序博客网 时间:2024/06/05 09:47

题意:给你n个点的坐标,一条直线上不会有三个及以上的点,求能组成多少平行四边形。 

题解:在平面直角坐标系中,平行四边形其中一条对角线上的两个端点的横坐标(纵坐标)的和,等于另一条对角线两个端点的横坐标(纵坐标)的和 。

AC代码:

#include<iostream>#include<map>#include<math.h>#include<stdio.h>using namespace std;map<pair<int,int>,int> e;int main(){int n,i,x[2005],y[2005],j,ans=0;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]); for(i=1;i<n;i++)    for(j=i+1;j<=n;j++){ ans+=e[make_pair(x[i]+x[j],y[i]+y[j])];e[make_pair(x[i]+x[j],y[i]+y[j])]++;} }  cout<<ans<<endl;return 0;} 


原创粉丝点击