几道随机化题
随机大法好,乱搞出奇迹。
pro:给一个n*m的网格,每个格子上有一种颜色或障碍,求最小的不含障碍的联通块包含至少k个颜色。
n,m<=100 color<=n*m k<=5
sol:对于color比较小的情况,比如color=k,就是一个裸的斯坦纳树。然后我们每次将所有颜色随机分到k个盒子里,一个盒子都染成相同颜色,然后按上述方法做,取最小值。每次做解是可行的,是最优解的情况是刚好随机到最后答案的颜色在不同盒子里,大概就是k!/(k^k)。
pro:给一张无向联通图,问删去两条边使图不连通的方案数。 n,m<=10^5
sol:先搞一颗生成树,对于所有非树边随机一个权值,然后将其覆盖的树边都xor上这个值,最后拥有相同权值的边对或者其中有权值是0的(割边)就是可行的。
但这题是有确定性做法的。
pro:给一个多重集合的比较方法:看最小的出现次数不相同的元素在哪里就哪边小。给一个序列,问其中连续子序列形成的多重集合的第k大(相同的也算多次)。(n<=10^5,k<=n*(n+1)/2)
sol:如果给一个集合,求<=它的个数是比较好做的。注意到左端点固定,集合大小随右端点是递增的。用堆维护即可。
然后每次在所有可行区间里随机找一个区间作为二分界,然后算可行的右端点范围。就没了。期望是O(Nlog^2N)的。
pro:求最大团。
sol:随机一个顶点序列,然后贪心能加就加。可以用bitset优化。
今年WF有一题,不过那题有确定性算法,不过这样居然能过!
CF也有不少用随机化的思想的题,感觉都挺赞的。
444B DZY Loves FFT
#213 Div1D Ghd
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)