題目描述:給定\(n\)個點,找出一個圓,使得這個圓與\(y\)軸相切而且包含全部的點,問最小半徑。spa
solution
解法卻是挺套路的。二分答案,求出每一個點對應的圓心可行域,判斷有沒有交集。問題是答案可能會很大,要用long double,而我二分又習慣了用eps來判斷退出,但由於精度的問題,這個條件基本不會退出,因此之後碰到二分小數的,仍是直接枚舉二分次數比較好。it
時間複雜度:\(O(能過)\)io
題目描述:有一棵樹,每一個點有一個權值,如今要用\(m\)條路徑來覆蓋這棵樹,每條路徑後一個點要是前一個點的父親,路徑上全部點的權值和不能超過\(S\),點數不能超過\(L\),路徑不能有相交部分,問\(m\)的最小值。class
solution
首先,路徑不能有相交部分這個條件是沒有用的,由於就算有相交的部分,也能夠經過調整使得不相交。暴力維護每一個點的子樹的葉子延伸到這個點的每條路徑的點數和總和,不符合條件的不延伸,若是沒有路徑延伸到這個點,那說明這個點要做爲路徑開頭,答案加一。這居然能過。時間
其實能夠先倍增預處理出每一個點最遠能夠向上走多遠,而後對於每一個點,只有一條路徑能夠穿過這個點繼續往上走,那顯然要選一條往上走能走最遠的那條路徑,其它路徑不延伸,若是沒有一條路徑能穿過這個點,那答案就要加一,這個點做爲開頭往上走。習慣
時間複雜度:\(O(nlogn)\)math