平行四邊形數
time limit:2000msmemory limit:32768kb64bit io format:%i64d & %i64u
submit
status
practice
fzu 2231
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
#include
using namespace std;
#define n 1000000
struct node
p[n];
struct node
a[n];
int cmp(const void *m,const void *n);
int main()
int cnt=0;
for(int i=0;ix>q->x)
else if(o->x==q->x&&o->y>q->y)
else
}
fzu 2231 平行四邊形數
題目 在乙個平面內給定n個點,任意三個點不在同一條直線上,用這些點可以構成多少個平行四邊形?乙個點可以同時屬於多個平行四邊形。input 多組資料 10 處理到eof。每組資料第一行乙個整數n 4 n 500 接下來n行每行兩個整數xi,yi 0 xi,yi 1e9 表示每個點的座標。output ...
FZU 2231 平行四邊形數
fzu 2231 平行四邊形數 題目大意 給你n個點,求能夠組成多少個平行四邊形?首先想到的是判斷兩對邊平行且相等,但這樣的話得列舉四個頂點,或者把點轉換成邊然後再列舉所有邊相等的麻煩,還不好處理。這時我們就得想到另乙個性質,對角線互相平分,這樣我們只需列舉對角線,轉換一下就是中點。因為給出的點不存...
FZU 2231 平行四邊形數(計算幾何)
problem description 在乙個平面內給定n個點,任意三個點不在同一條直線上,用這些點可以構成多少個平行四邊形?乙個點可以同時屬於多個平行四邊形。input 多組資料 10 處理到eof。每組資料第一行乙個整數n 4 n 500 接下來n行每行兩個整數xi,yi 0 xi,yi 1e9...