2023.9.20 随机化

HDU 6804

把一班的同学看做正数重量,二班的是负数重量,做一个背包。
把一班和二班的同学随机打乱,这样的话,计算中间的值域就不会太大,背包要计算的也缩小了。
可以看做是“随机游走”。

HDU 6242

由于题目要求的是 \(n/2\) 个点的圆心,我们随机取三个点求圆心,都取到这 \(n/2\) 个点中的概率是 \(\frac{1}{8}\).

HDU 6413

考虑给每个值都赋一种颜色。由于要求路径里值的不同数量 \(\ge k\),那么颜色的不同肯定能带来值的不同。
我们每次随机颜色时,都做一遍 bfs,加一维状态,表示当前取了的颜色的状态。取满全部颜色就肯定取到 \(k\) 种的值。
考虑答案这些不同的值都分到不同颜色的概率,是 \(\frac{k!}{k^k}=0.006\),失败概率是 \(0.994\).
随机差不多 \(400\) 次,失败概率只有 \(0.09\).

HDU 6379

首先乘法难处理,考虑取对数计算。
首先可以在环上枚举出发点,然后做一个 dp,每次 dp 是有决策单调性的,是 \(O(nk)\).
最后输出方案的话就是记录决策点,乘回去。
然而 \(k\) 如果很大呢?总的复杂度是 \(O(n^2k)\) 的。
因为从答案的 \(k\) 个决策点任意一个出发做 \(dp\) 都是对的,
那么我们随机 \(G\times \frac{n}{k}\) 个点去做 dp,总的复杂度是 \(O(Gn^2)\) 的。
\(G\) 是一个常数,取 \(10\) 左右即可。

Luogu P7146

随机的图可以发现环是不多的,考虑每个环删掉一条边形成树,枚举这些删掉的边的状态,再作树上 dp.

posted @ 2023-09-20 08:26  s1monG  阅读(133)  评论(0)    收藏  举报