几道随机化题

随机大法好,乱搞出奇迹。算法

 

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

相关文章
相关标签/搜索