Problem
半徑為 R 的圓上有 N 個點,請問任挑三點形成的三角形面積總和為多少。
Sample Input
|
|
Sample Output
|
|
Solution
因此總共有 C(N, 3) 的三角形,聽說直接窮舉三點計算三角形面積就可以過,時間複雜度是 O(n^3)。事實上可以換個方式想,計算三角形面積,相當於用一個圓減去三個弓形面積。
那麼實際上會有 C(N, 3) 個圓減去一堆弓形面積。關於所有弓形面積的計算,可以窮舉兩點拉一條邊作為弦,接著會有兩個弓形,分別找到左右兩側的點數,就能知道有多少三角形分別使用多少次這些弓形面積,加總之後就是總共的弓形面積,複雜度降至 O(n^2)。
事實上還可以再更數學點,但是不太會推導,最後貌似可以在 O(n) 完成。
|
|