在乙個平面內給定n個點,任意三個點不在同一條直線上,用這些點可以構成多少個平行四邊形?乙個點可以同時屬於多個平行四邊形。
input
多組資料(<=10),處理到eof。
每組資料第一行乙個整數n(4<=n<=500)。接下來n行每行兩個整數xi,yi(0<=xi,yi<=1e9),表示每個點的座標。
output
每組資料輸出乙個整數,表示用這些點能構成多少個平行四邊形。
sample input
4sample output0 11 0
1 12 0
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 每組資...