AHOI2012 訊號塔 最小圓覆蓋模板

2022-03-03 16:38:24 字數 747 閱讀 6041

最小圓覆蓋。

1、列舉第乙個點,考慮當前圓是否包含了這個點,如果沒有,則把圓變成以這個點為圓心,半徑為0的圓。

2、列舉第二個點,考慮圓是否包含了這個點,如果沒有,則把圓變成以這兩個點的中點為圓心,半徑為兩點距離一半的圓。

3、列舉第三個點,節點是否在圓內,如果不在,直接把圓變成這三個點的外接圓。具體怎麼做,就是解方程(文化課應該在九年級數學講到過)

記得要打亂點的順序!期望時間複雜度為\(o(n)\)(具體為什麼我也不知道,但是或許可以感性地理解一下。。。)

另外,如果不想掉精度太嚴重,還是建議除法都移項,換成乘法。

update:2019.4.4

**如下:

#include#include#include#include#include#include#define eps 1e-15

#define maxn 500010

using namespace std;

int n;

double r;

struct nodenode[maxn],o;

inline double dist(node a,node b)

inline void solve(node a,node b,node c)

int main()}}

}}

printf("%.2lf %.2lf %.2lf\n",o.x,o.y,r);

return 0;

}

AHOI2012 樹屋階梯

卡特蘭數!至於為什麼是卡特蘭數,就稍微說那麼一兩句吧 對於乙個高度為 i 的階梯,我們可以在左上角填乙個高度為 k 的階梯,右下角填乙個高度為 i 1 k 的階梯剩下的我們用乙個大的長方形填上就可以啦 比如這個樣子 之後還需要高精,但是為了簡單好寫,這裡可以分解質因數,之後就變成另乙個單精度乘高精了...

AHOI2012 樹屋階梯

有無窮多的任意尺寸矩形,搭建乙個 n 級正階梯有多少種方案?任意大小為 i 的階梯,都可以由左上角放一塊大小為 j 的,右下角放一塊大小為 i j 1 的來構成,每一塊內部遞迴填充,對應 catalan 數 實現需要高精乘單精,高精除單精 include using namespace std co...

AHOI2012 樹屋階梯 題解(卡特蘭數)

暑假期間,小龍報名了乙個模擬野外生存作戰訓練班來鍛鍊體魄,訓練的第乙個晚上,教官就給他們出了個難題。由於地上露營濕氣重,必須選擇在高處的樹屋露營。小龍分配的樹屋建立在一顆高度為n 1尺 n為正整數 的大樹上,正當他發愁怎麼爬上去的時候,發現旁邊堆滿了一些空心四方鋼材 如圖1.1 經過觀察和測量,這些...