幾道隨機化題

隨機大法好,亂搞出奇跡。算法

 

pro:給一個n*m的網格,每一個格子上有一種顏色或障礙,求最小的不含障礙的聯通塊包含至少k個顏色。優化

n,m<=100 color<=n*m k<=5code

 

sol:對於color比較小的狀況,好比color=k,就是一個裸的斯坦納樹。而後咱們每次將全部顏色隨機分到k個盒子裏,一個盒子都染成相同顏色,而後按上述方法作,取最小值。每次作解是可行的,是最優解的狀況是恰好隨機到最後答案的顏色在不一樣盒子裏,大概就是k!/(k^k)。get

 

pro:給一張無向聯通圖,問刪去兩條邊使圖不連通的方案數。 n,m<=10^5it

 

sol:先搞一顆生成樹,對於全部非樹邊隨機一個權值,而後將其覆蓋的樹邊都xor上這個值,最後擁有相同權值的邊對或者其中有權值是0的(割邊)就是可行的。方法

但這題是有肯定性作法的。集合

 

pro:給一個多重集合的比較方法:看最小的出現次數不相同的元素在哪裏就哪邊小。給一個序列,問其中連續子序列造成的多重集合的第k大(相同的也算屢次)。(n<=10^5,k<=n*(n+1)/2)co

 

sol:若是給一個集合,求<=它的個數是比較好作的。注意到左端點固定,集合大小隨右端點是遞增的。用堆維護便可。生成

而後每次在全部可行區間裏隨機找一個區間做爲二分界,而後算可行的右端點範圍。就沒了。指望是O(Nlog^2N)的。顏色

 

pro:求最大團。

 

sol:隨機一個頂點序列,而後貪心能加就加。能夠用bitset優化。

     今年WF有一題,不過那題有肯定性算法,不過這樣竟然能過!

 

CF也有很多用隨機化的思想的題,感受都挺讚的。

444B DZY Loves FFT

442E Gena and Second Distance

#213 Div1D Ghd

相關文章
相關標籤/搜索