平行四边形数
来源:互联网 发布:苹果ios7是什么软件 编辑:程序博客网 时间:2024/05/01 21:01
Description
在一个平面内给定n个点,任意三个点不在同一条直线上,用这些点可以构成多少个平行四边形?一个点可以同时属于多个平行四边形。
Input
多组数据(<=10),处理到EOF。
每组数据第一行一个整数n(4<=n<=500)。接下来n行每行两个整数xi,yi(0<=xi,yi<=1e9),表示每个点的坐标。
Output
每组数据输出一个整数,表示用这些点能构成多少个平行四边形。
Sample Input
40 11 01 12 0
Sample Output
1
题目解法:求出任意两个点的中点,因为题目中已经表明任意三个点不在一条直线上,所以中点相同的点中任选两个都能组成平行四边形。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct point{ int x,y;}point[500];struct node{ int zx,zy;}a[250000];bool cmp(node p,node q){ if(p.zx==q.zx){ return p.zy<q.zy; } else return p.zx<q.zx;}int main(){ int n; while(~scanf("%d",&n)){ for(int i=0;i<n;i++){ scanf("%d%d",&point[i].x,&point[i].y); } int cnt=0; for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ a[cnt].zx=point[i].x+point[j].x; a[cnt].zy=point[i].y+point[j].y; cnt++; } } sort(a,a+cnt,cmp); int sum=0; int num=1; for(int i=1;i<cnt;i++){ if(a[i].zx==a[i-1].zx&&a[i].zy==a[i-1].zy){ num++; } else{ sum+=(num*(num-1)/2); num=1; } } printf("%d\n",sum); } return 0;}
0 0
- 平行四边形数
- 平行四边形数
- 平行四边形数
- 平行四边形数
- 平行四边形数
- 平行四边形数
- fzu 2231 平行四边形数
- 平行四边形数(fzoj_2231) 几何
- FZUOJ 2231 平行四边形数
- FZU 2231 平行四边形数
- FZU 2231 平行四边形数
- FZU 2231 平行四边形数
- Problem 2231 平行四边形数
- fzu-2231、 平行四边形数
- fzu2231平行四边形数
- Problem 2231 平行四边形数
- FZU Problem 2231 平行四边形数
- FZU2231 平行四边形数 计算几何
- Codeforces 635D Factory Repairs (树状数组)
- Activity和Service之间只相差了一个Window
- 蛇形填数
- SpringMVC异常统一处理
- Android清理内存
- 平行四边形数
- hdoj2050代码及详解
- xampp 设置虚拟主机
- shell自动监控重启Tomcat脚本
- springcloud(第四篇)springcloud hystrix
- 块设备驱动程序(Linux设备驱动程序)
- LeetCode---Palindrome Number解题分析
- Yii表单的使用
- 5分钟学会双拼 双拼输入法 最简单的双拼入门教学 图文教程