CF2089C1 Key of Like (Easy Version)

题目大意:

现在有 \(n\) 个人轮流选一个钥匙和锁匹配,直到 \(L\) 对 锁——箱子 全部匹配。
每个人都是足够聪明的,但初始时纯随机排列所与钥匙。
求每个人期望开多少把锁。
\(n \le 100, L \le 5000\)

解题思路:

由于所有锁和箱子本质是一样的,所以我们可以令每个人都去找第一个未匹配的钥匙。
那么朴素的,我们设 \(dp_{i,j,k}\) 表示前 \(i\) 个人,第一个未解决的箱子位置是 \(j\),且这已经失败了 \(k\) 次的概率。

这样转移是 \(O(1)\) 的,可是状态数爆炸。
但我们有一个性质:
就是无论失败了多少次,他成功的概率是一样的!

于是我们就改 \(dp_{i,j}\) 状态表示 \(1 \sim j\) 都消耗了,且第 \(j\) 个是被 \(i\) 成功匹配的概率。
所以我们枚举 \(j - 1\) 是被谁匹配的。
这样时间复杂度为 \(O(n^2 \times L)\) 的。

总结:

当状态超了的时候,我们可以对于每一位列一下他对答案的影响。
这样来优化时间复杂度。

posted @ 2025-05-09 23:17  positive_deviation  阅读(18)  评论(0)    收藏  举报