團體程式設計天梯賽 L3 021 神壇(極角排序)

2021-10-03 15:44:47 字數 1032 閱讀 3859

思路:1.一共n個點,對於每乙個點我們都可以將它作為頂點,那麼此點和其它n-1個點就會組成n-1個向量;

2.n-1個向量中,我們任意選取兩個向量都可以滿足「選取三塊石頭」這個條件,但是我們現在的目標是面積最小,因此我們需要對這n-1個向量進行極角排序;

(證明請參考

3.a ,b

,c

a,b,c

a,b,

c三點圍城的平面區域面積為s=a

b⃗×a

c⃗

2s=\frac\times\vec}

s=2ab×

ac​,即ax∗

by−a

y∗bx

a_x*b_y-a_y*b_x

ax​∗by

​−ay

​∗bx

​;4.遍歷每一對排序後的相鄰向量,維護歷史面積最小值;

//複雜度約等於o(n

2log⁡n

)o(n^2\log)

o(n2

logn

)**:

#include

using

namespace std;

typedef

long

long ll;

const

int maxn =

5005

;ll x[maxn]

, y[maxn]

, ans = llong_max;

struct vec

} v[maxn]

;#define a_cross(a, b) abs(a.x * b.y - a.y * b.x)

intmain()

;}sort

(v, v + tmp)

;for

(int j =

1; j < tmp;

++j)

}printf

("%.3f"

,0.5

* ans)

;return0;

}

L3 021 神壇 極角排序

l3 021 神壇 30 分 在古老的邁瑞城,巍然屹立著 n 塊神石。長老們商議,選取 3 塊神石圍成乙個神壇。因為神壇的能量強度與它的面積成反比,因此神壇的面積越小越好。特殊地,如果有兩塊神石座標相同,或者三塊神石共線,神壇的面積為0.000。長老們發現這個問題沒有那麼簡單,於是委託你程式設計解決...

L3 021 神壇 計算幾何

l3 021 神壇 30 分 在古老的邁瑞城,巍然屹立著 n 塊神石。長老們商議,選取 3 塊神石圍成乙個神壇。因為神壇的能量強度與它的面積成反比,因此神壇的面積越小越好。特殊地,如果有兩塊神石座標相同,或者三塊神石共線,神壇的面積為0.000。長老們發現這個問題沒有那麼簡單,於是委託你程式設計解決...

L3 021 神壇 (30 分 計算幾何

在古老的邁瑞城,巍然屹立著 n 塊神石。長老們商議,選取 3 塊神石圍成乙個神壇。因為神壇的能量強度與它的面積成反比,因此神壇的面積越小越好。特殊地,如果有兩塊神石座標相同,或者三塊神石共線,神壇的面積為0.000。長老們發現這個問題沒有那麼簡單,於是委託你程式設計解決這個難題。輸入在第一行給出乙個...