【LightOJ - 1058】Parallelogram Counting
来源:互联网 发布:淘宝模特招聘是真的吗 编辑:程序博客网 时间:2024/05/17 06:14
Description
There are n distinct points in the plane, given by their integer coordinates. Find the number of parallelograms whose vertices lie on these points. In other words, find the number of 4-element subsets of these points that can be written as {A, B, C, D} such that AB || CD, and BC || AD. No four points are in a straight line.
Input
Input starts with an integer T (≤ 15), denoting the number of test cases.
The first line of each test case contains an integer n (1 ≤ n ≤ 1000). Each of the next n lines, contains 2space-separated integers x and y (the coordinates of a point) with magnitude (absolute value) of no more than1000000000.
Output
For each case, print the case number and the number of parallelograms that can be formed.
Sample Input
2
6
0 0
2 0
4 0
1 1
3 1
5 1
7
-2 -1
8 9
5 7
1 1
4 8
2 0
9 8
Sample Output
Case 1: 5
Case 2: 6
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int N = 1005;struct node {int x;int y;} s[N],mid[N*N];bool cmp(node A,node B) {if(A.x==B.x)return A.y<B.y;return A.x<B.x;}int main() {int T,p=0;scanf("%d",&T);while(T--) {int n;scanf("%d",&n);for(int i=0; i<n; i++) {scanf("%d%d",&s[i].x,&s[i].y);}int cnt=0;for(int i=0; i<n; i++) {for(int j=i+1; j<n; j++) {mid[cnt].x=s[i].x+s[j].x;//不能除二,可能为奇数导致误差 mid[cnt].y=s[i].y+s[j].y;cnt++;}}sort(mid,mid+cnt,cmp);int count=1,sum=0;for(int i=0; i<cnt;i++) {if(mid[i].x==mid[i+1].x&&mid[i].y==mid[i+1].y) {count++;} else {sum=sum+count*(count-1)/2;count=1;}}printf("Case %d: %d\n",++p,sum);}return 0;}
- 【LightOJ - 1058】Parallelogram Counting
- lightoj-1058 - Parallelogram Counting
- LightOJ 1058 - Parallelogram Counting
- LightOJ-1058 Parallelogram Counting
- LightOJ 1058 & Poj 1971 Parallelogram Counting
- LightOJ 1058 & Poj 1971 Parallelogram Counting
- LightOJ 1058 Parallelogram Counting(数学)
- LightOJ - 1058 Parallelogram Counting(平行四边形个数)
- lightoj 1058 - Parallelogram Counting (几何,平行四边形)
- 【LightOJ】1058 - Parallelogram Counting(暴力计数)
- LightOJ 1058 Parallelogram Counting【平行四边形的判定】
- LightOJ 1058Parallelogram Counting (数学+思维)
- LightOJ 题目1058Parallelogram Counting(组合数学)
- lightoj-1058 - Parallelogram Counting【计算几何】(思维)
- 1058 - Parallelogram Counting
- LightOJ - 1058 Parallelogram Counting (数学几何&技巧)给n个点求组成平行四边形个数
- Parallelogram Counting
- poj 1971 Parallelogram Counting
- Java IO中几个主要类介绍和使用
- poj3252 Round Numbers(数位dp)
- Sencha Touch 解决 button tap事件 按下和弹起 两次响应
- 《Groovy程序设计》读书笔记之第二部分 面向Java开发者的Groovy(下)
- Android串口操作
- 【LightOJ - 1058】Parallelogram Counting
- codeforces-508C -鬼吹灯(巧妙模拟)
- 关于融云在APIcloud中的集成
- 实习杂记(33):surfaceTexture 和 surfaceview 的区别
- jQuery-1
- 基于mysql5.6实现的同城多IDC间的mysql部分库表数据复制方案
- 缓存的理解
- 文章标题
- uva 12657