判斷平行四邊形數 typedef pair p

2021-08-07 09:43:28 字數 714 閱讀 2478

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

input

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

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

output

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

sample input

4

0 11 0

1 12 0

sample output

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

思路:所以可以用乙個變數ans=map[make_pair(x[i]+x[j],y[i]+y[j])]++;來表示所求結果。 

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

#include#include#includeusing namespace std;

int x[505],y[505];

typedef pairp;

int main()

p[501],q[250001];

bool cmp(zz a,zz b)

{ if(a.x==b.x)

return a.y

平行四邊形數

c 平行四邊形數 time limit 2000ms memory limit 32768kb 64bit io format i64d i64u fzu 2231 description 在乙個平面內給定n個點,任意三個點不在同一條直線上,用這些點可以構成多少個平行四邊形?乙個點可以同時屬於多個平...

平行四邊形數

在乙個平面內給定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 每組資...