平行四邊形(幾何)題解

2021-10-06 10:22:03 字數 1267 閱讀 6776

upc no.17場 問題 e: 平行四邊形

時間限制: 3 sec 記憶體限制: 128 mb

題目描述

求平面上n個點構成的平行四邊形個數。

輸入一行乙個數n。

接下來n行,每行兩個數x,y,表示這個點的座標為(x,y)。

保證任意兩點不重合,任意三點不共線。

輸出一行乙個整數表示平行四邊形個數。

樣例輸入

40 1

1 01 1

2 0樣例輸出1提示

對於100%的資料:n≤1500。

題解:

首先回顧一下判定平行四邊形的5大方法:

1、兩組對邊分別平行的四邊形是平行四邊形(定義判定法);

2、一組對邊平行且相等的四邊形是平行四邊形;

3、兩組對邊分別相等的四邊形是平行四邊形;

4、兩組對角分別相等的四邊形是平行四邊形(兩組對邊平行判定);

5、對角線互相平分的四邊形是平行四邊形。

補充:條件3僅在平面四邊形時成立,如果不是平面四邊形,即使是兩組對邊分別相等的四邊形,也不是平行四邊形。

第一組的話,要找到四個點,然後再利用向量判斷是否平行,暴力列舉的話就要用到四重迴圈,複雜度太高,跳過。

篩選過後,選擇第五條,首先,對角線互相平分可以想到用中點重合,而且中點的求法只需要兩個點的座標,用二重迴圈即可。

【本題要感謝一位小姐姐,受她啟發,有些東西直接貼過來了,畢竟寫的好啊qwq】。

#include

#define ll long long

#define inf 0x3f3f3f3f

using

namespace std;

const

int n =

1505

;int n,num=

1,sum=0;

struct nodec[n]

;node s[n*n]

;bool

cmp(node a,node b)

intmain()

}sort

(s,s+cnt,cmp)

;int xx=s[0]

.x;int yy=s[0]

.y;for

(int i=

1; iprintf

("%d"

,sum)

;return0;

}

平行四邊形

請小夥伴們對自己ac的題目進行標記,注意每人只能標記一次!不知道的不要標記,惡意標記者將 賬號!時間限制 3 sec 記憶體限制 128 mb 提交 狀態 題目描述 求平面上n個點構成的平行四邊形個數。輸入 一行乙個數n。接下來n行,每行兩個數x,y,表示這個點的座標為 x,y 保證任意兩點不重合,...

平行四邊形邊數

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

平行四邊形數

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