平行四邊形數

2021-07-11 16:43:42 字數 1083 閱讀 6375

c - 平行四邊形數

time limit:2000ms memory limit:32768kb 64bit io format:%i64d & %i64u

fzu 2231

description

在乙個平面內給定n個點,任意三個點不在同一條直線上,用這些點可以構成多少個平行四邊形?乙個點可以同時屬於多個平行四邊形。

input

多組資料(<=10),處理到eof。

每組資料第一行乙個整數n(4<=n<=500)。接下來n行每行兩個整數xi,yi(0<=xi,yi<=1e9),表示每個點的座標。

output

每組資料輸出乙個整數,表示用這些點能構成多少個平行四邊形。

sample input

4 0 1

1 0

1 1

2 0

sample output

1平行四邊形的對角線互相平分,所以可以在輸入某個點的座標後,將該點與前面所有點的中點求出,中點重合的即可構成平行四邊形。

這裡可以用乙個map來儲存中點相同的線段數量的資訊用pair使中點座標成為1組資料,對這組資料的map值+1即可。

每當找到一條新的線段與之前的線段的中點重合,則該線段可以與之前所有的相同中點的線段構成平行四邊形,所以可以用乙個變數ans=map[make_pair(x[i]+x[j],y[i]+y[j])]++;來表示所求結果。

這裡之所以不除以2是因為有可能出現小數而不便處理,反正所有中點座標值都變成2倍也沒有影響。

#include

#include

#include

using

namespace

std;

int x[505],y[505];

int main()

}printf("%d\n",ans);

}return

0;}

平行四邊形數

在乙個平面內給定n個點,任意三個點不在同一條直線上,用這些點可以構成多少個平行四邊形?乙個點可以同時屬於多個平行四邊形。input 多組資料 10 處理到eof。每組資料第一行乙個整數n 4 n 500 接下來n行每行兩個整數xi,yi 0 xi,yi 1e9 表示每個點的座標。output 每組資...

平行四邊形數

在乙個平面內給定n個點,任意三個點不在同一條直線上,用這些點可以構成多少個平行四邊形?乙個點可以同時屬於多個平行四邊形。input 多組資料 10 處理到eof。每組資料第一行乙個整數n 4 n 500 接下來n行每行兩個整數xi,yi 0 xi,yi 1e9 表示每個點的座標。output 每組資...

判斷平行四邊形數 typedef pair p

在乙個平面內給定n個點,任意三個點不在同一條直線上,用這些點可以構成多少個平行四邊形?乙個點可以同時屬於多個平行四邊形。input 多組資料 10 處理到eof。每組資料第一行乙個整數n 4 n 500 接下來n行每行兩個整數xi,yi 0 xi,yi 1e9 表示每個點的座標。output 每組資...