Loading

[ARC093F] Dark Horse Note

\(\mathbf{Part. -1}\)

  • \(2^N\) 个人,按照满二叉树的形态进行淘汰赛,一开始的排列顺序为所有 \((2^N)!\) 个排列之一。
  • 你是第 \(1\) 个人,已知每一对人之间的实力关系,具体地说:
    • 给出 \(M\) 个人 \(A_1 \sim A_M\)
    • \(M\) 个人都打得过你。
    • 你打得过除了这 \(M\) 个人之外的所有其他人。
    • 对于剩下的情况(你不参与的情况),编号小的人胜利。
  • 问你在所有的 \((2^N)!\) 种情况中,有多少种情况可以取得最终胜利。答案对 \({10}^9 + 7\) 取模。

\(1 \le N \le 16\)\(0 \le M \le 16\)\(2 \le A_i \le 2^N\)\(A_i < A_{i + 1}\)

\(\mathbf{Note}\)

考虑对会输的层次容斥。如果每个层填的人分别是 \(\{p_i\}\),每层的区间长度为 \(\{l_i\}\),从小到大排序,有:

\[\sum_{S \subseteq Q} (-1)^{|S|}(2^n - \sum_{i = 1}^{|S|}l_i)!\sum_{p}\prod_{i = 1}^{|S|}(p_i - \sum_{j = 1}^{i - 1}l_j)_{l_i} \]

考虑如何快速计算 \(\sum_{p}\prod_{i = 1}^{|S|}(p_i - \sum_{j = 1}^{i - 1}l_j)_{l_i}\)。似乎不是很好算?考虑按照 \(|S|\) 分组。

\[\sum_{x = 0}^n (-1)^x \sum_{p'\subseteq p, |p'|=x} \sum_{\{l_i\},|l| = x} \Big(\prod_{i = 1}^x (p_i - \sum_{j = 1}^{i - 1}l_j)_{l_i}\Big)\times (2^n-\sum_{i = 1}^x l_i)! \]

考虑对后面的 DP,设 \(f_{i, j, s}\) 表示前 \(i\)\(p_i\) 选完了,选出来 \(j\) 个,当前 \(l\) 的选择情况为 \(s\). 转移有:

\[f_{i - 1, j, s} \times \Big(p_i - \sum_{j = 0}^{n-1} \big((s \gg j) \,\&\, 1\big)\times l_j\Big)_{l_k}\to f_{i, j + 1, s \,| \, (1 \ll k)} \]

\[f_{i - 1, j, s} \to f_{i, j, s} \]

\[\sum_{p'\subseteq p, |p'|=x} \sum_{\{l_i\},|l| = x} \Big(\prod_{i = 1}^x (p_i - \sum_{j = 1}^{i - 1}l_j)_{l_i}\Big)\times (2^n-\sum_{i = 1}^x l_i)! \\ = \sum_{s = 0}^{1\ll n}f_{m, x, s}\times \Big(2^n - \sum_{i = 1}^n ((s \gg (i - 1)) \, \& \, 1) \times l_i\Big)! \]

故原式为:

\[\sum_{x = 0}^n (-1)^x \sum_{s = 0}^{1\ll n}f_{m, x, s}\times \Big(2^n - \sum_{i = 1}^n ((s \gg (i - 1)) \, \& \, 1) \times l_i\Big)! \]

时间复杂度为 \(\mathcal{O}(nm^22^n)\)

注意到 DP 状态中的 \(j\) 其实没用,可以省略,因此时间复杂度降到 \(\mathcal{O}(nm2^n)\),可以通过题目。

posted @ 2025-07-22 14:55  DE_aemmprty  阅读(10)  评论(2)    收藏  举报