QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: Kevin5307

Posted at: 2025-12-12 19:49:52

Last updated: 2025-12-12 19:50:04

Back to Problem

题解

题目大意

牌堆中有 $n$ 种花色的牌,第 $i$ 种花色有 $a_i$ 张,第 $i$ 种花色的每张牌权值均为 $X_i$,$X_i$ 未知。进行 $m$ 轮游戏,每轮游戏依次将牌堆中剩余的牌按带权概率抽出,直到牌堆被抽空。给出每轮游戏依次被抽出的牌的花色顺序,还原出一组 $X_i$。

设你输出的权值为 $W_i$,则你的答案正确当且仅当对于任意 $X_i\leq X_j$,都有:

$$ \left|\frac{X_i}{X_i+X_j}-\frac{W_i}{W_i+W_j}\right|< 0.02 $$

数据范围

保证 $m=10^5$,$\sum a_i=30$,即牌堆中总共有 $30$ 张牌。

解题过程

通过每张牌作为每轮游戏第一张出现的频率,可以求出 $X_i$ 的一组近似值,但是由于 $X_i$ 可能非常小,两个几乎没有出现的花色之间的 $X_i$ 之比可能误差较大。

为了让被抽出概率极小的两种花色之间也能比较,我们考虑,对于花色 $i$ 和 $j$,计算出每轮游戏第一次抽出一张花色为 $i$ 或 $j$ 的牌时,这张牌花色是 $i$ 的频率。有了这个频率,我们可以对所有 $\frac{a_iX_i}{a_jX_j}$ 给出近似。

这个近似在 $X_i$ 与 $X_j$ 比例悬殊的时候仍然不够精确。于是我们希望首先将所有花色对 $a_iX_i$ 排序。利用前文提到的,作为每轮游戏第一张出现的频率,可以找出所有花色中 $a_iX_i$ 最大的一种。进一步地,计算每轮游戏第一张非前述花色牌的花色频率,可以求出 $a_iX_i$ 第二大的一种花色。如此递归下去便可以将花色排序。

时间复杂度 $O(mn^2)$ 或 $O(mn)$。

参考资料

  1. Unfair Card Deck - Problem - QOJ.ac
  2. 条件概率与独立性 - OI Wiki
  3. 随机变量 - OI Wiki

Comments

No comments yet.