1 条题解

  • 0
    @ 2026-9-3 11:19:40

    题解

    思路

    记模数为 M=998244353M=998244353,p=a/bp=a/b,q=1−pq=1-p。只要当前分组有 ii 人,编号的相对顺序仍然唯一决定任意一场比赛的胜率,因此其后续比赛期望只与 ii 有关。记这个期望为 fif_i。

    再记:

    • ci,jc_{i,j}:从 ii 个有序顶点中选出 jj 个,使这 jj 个顶点全部输给其余顶点的概率之和;
    • sis_i:ii 个顶点形成强连通竞赛图的概率。

    做法

    子任务 1:枚举竞赛图

    当 n≤6n\le 6 时,每张竞赛图只有 (n2)≤15\binom n2\le 15 条边。枚举所有边的方向,用两次图遍历判断强连通,并按每张图的概率累加 sis_i。再枚举顶点子集求 ci,jc_{i,j},即可代入下文的期望递推。

    复杂度为 O(2(n2)n2)O(2^{\binom n2}n^2)。

    子任务 2:枚举顶点子集

    固定 ii 和一个大小为 jj 的子集 SS。要求所有 SS 中顶点输给补集顶点,跨越割的每条边方向就都被确定了,其概率是若干个 pp 与 qq 的乘积。枚举所有子集并累加,便能得到全部 ci,jc_{i,j};随后按相同递推计算 si,fis_i,f_i。

    复杂度为 O(2nn+n2)O(2^n n+n^2),足以通过 n≤18n\le18。

    子任务 3:二次动态规划

    考虑加入编号最大的第 ii 个顶点。若它不在所选的 jj 个败者中,需要它战胜这 jj 人,贡献 qjq^j;若它在败者集合中,则前 i−1i-1 人中选择 j−1j-1 人,且它需要输给其余 i−ji-j 人,贡献 pi−jp^{i-j}。因此

    $$c_{i,j}=c_{i-1,j}q^j+c_{i-1,j-1}p^{i-j},\qquad c_{i,0}=1.$$

    竞赛图的强连通分量缩点后形成唯一的链。按链末端强连通分量的大小划分所有情况,可得

    si=1−∑j=1i−1sjci,j.s_i=1-\sum_{j=1}^{i-1}s_jc_{i,j}.

    若链末端分量大小为 j<ij<i,本轮与后续贡献为

    (j2)+j(i−j)+fj+fi−j.\binom j2+j(i-j)+f_j+f_{i-j}.

    当整张图强连通时,本轮进行了 (i2)\binom i2 场比赛,之后仍回到同样的 ii 人状态。于是

    $$f_i=\sum_{j=1}^{i-1}s_jc_{i,j} \left(\binom j2+j(i-j)+f_j+f_{i-j}\right) +s_i\left(\binom i2+f_i\right).$$

    移项得到

    $$f_i=\frac{ \sum_{j=1}^{i-1}s_jc_{i,j} \left(\binom j2+j(i-j)+f_j+f_{i-j}\right) +s_i\binom i2}{1-s_i}.$$

    所有除法均用模逆元完成。

    复杂度

    满分算法的总时间复杂度为 O(n2)O(n^2),空间复杂度为 O(n2)O(n^2)。

    • 1

    信息

    ID
    1500
    时间
    3000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者