2026.7.18 考试总结

总结

估:100 + 100 + 100 + 0

实:100 + 100 + 100 + 0 rk1

感谢 fsfdgdg 的麦当劳。/bx/bx/bx/bx

Max History

简化版题意:给定长度为 \(n\) 的数列 \(\{a_n\}\) ,定义数列的权值为 \(\sum^n_{i=1}[a_i>\max^{i-1}_{j=1}a_j]a_i\) ,询问该数列的所有 \(n!\) 种置换构成的数列权值和。答案对 \(10^9+7\) 取模。注意不算最大值的贡献.

考虑拆贡献到每一个数。假设大于等于 \(x\) 的数不包括自己有 \(cnt\) 个,那么我们算 \(cnt\) 排在 \(x\) 后面的方案数,那么我们一个一个加,加的第 \(i\) 个只能在可以插的 \(i + 1\) 个空中选后 \(i\) 个,那么显然有方案数:

\[n! \prod_{i = 1} ^ {cnt} \frac i {i + 1} = n! \frac 1 {cnt + 1} \]

那么设 \(x\)\(c\) 个,那其贡献就应为 \(\frac {x \times c \times n!} {cnt + 1}\)。把每个数贡献加起来即可。做完了。

code

Wrong Answer on test 233 (Hard Version)

下文 \(a_{i + 1}\)\(i = n\) 时均表示 \(a_{1}\)。我们发现具体的值是不重要的。设有 \(sum\) 个位置满足 \(a_i \ne a_{i + 1}\)\(n - sum\) 个位置满足 \(a_i = a_{i + 1}\)。对于 \(a_i = a_{i + 1}\) 原序列 \(h_i\) 右移后不会造成得分的变化,随便选。对于 \(a_i \ne a_{i + 1}\)\(h_i = a_{i + 1}\) 得分加一等于 \(a_i\) 得分减一,都不等于而为剩下的 \(k\) 个位置得分没影响,我们枚举 \(t\) 表示 \(t\) 个位置造成了得分的变化,有:

\[k ^ {n - sum} \sum_{t = 1} ^ {sum} (k - 2) ^ {sum - t} \sum_{i = \lfloor \frac t 2 \rfloor + 1} ^ t \binom{t}{i} \]

第二维 \(i\) 枚举的得分加一的位置。我们注意到 \(\sum_{i = \lfloor \frac t 2 \rfloor + 1} ^ t \binom{t}{i}\) 可以快速地求,当 \(t\) 为奇数显然为 \(2 ^ {t - 1}\),偶数为 \(\frac {2 ^ t - \binom{t}{\lfloor \frac{t}{2} \rfloor}} 2\)。直接算就做完了。

code

Expected Components

简化版题意:定义长度为 \(n\) 的数列 \(\{a_n\}\) 的权值为 \(\sum^n_{i=1}[a_i\neq a_{i~\text{mod}~n+1}]\) ,定义数列 \(\{a_n\}\) 与数列 \(\{b_n\}\) 本质相同当且仅当两者能经过若干次循环位移后变得完全一致。给定长度为 \(n\) 的数列 \(\{a_n\}\) ,询问从该数列的所有 \(n!\) 种置换构成的所有本质不同数列中等概率随机选取一个,其权值的期望。答案对 \(998244353\) 取模。

设每个数出现次数为 \(buc_i\)。由于要求循环不同构,我们考虑枚举循环节长度 \(i\),显然有 \(x = \frac m i\) 个,其中应有 \(x \mid \gcd(buc_1, buc2, \dots) \land i \mid n\),那么有用的 \(i\) 最多只有 \(240\) 个,所以直接枚举。对于一个循环节里面,设 \(bc_i = \frac {buc_i} x\) 表示其中 \(i\) 元素个数,我们分别算总方案数和总贡献,一除就是期望。对于总方案数 \(tot\)\(\binom{i}{bc_1, bc_2, \dots}\),对于总贡献,现设每个位置都有贡献然后减去不合法的,有:

\[tot \times i - \sum_{k = 1} ^ i \sum_c \binom{i - 2}{bc_1, bc_2, \dots} \times \frac {bc_c!} {(bc_c - 2)!} \]

前面那坨 \(tot \times i\) 是好算的,把后面的领出来化一下:

\[\sum_{k = 1} ^ i \sum_c \binom{i - 2}{bc_1, bc_2, \dots} \times \frac {bc_c!} {(bc_c - 2)!} \]

\(\frac {bc_c!} {(bc_c - 2)!}\) 拆开,由于原式与位置 \(k\) 无关可以化成:

\[i \times \sum_c \binom{i - 2}{bc_1, bc_2, \dots} \times bc_c (bc_c - 1) \]

\(t = \binom{i - 2}{bc_1, bc_2, \dots}\) 并提出来:

\[i \times t \times \sum_c bc_c (bc_c - 1) \]

\(sum = \sum_c bc_c (bc_c - 1)\),有答案:

\[i \times tot - i \times t \times sum \]

4 个东西都可以 \(O(n)\) 算。我们算其对于总方案数 \(s\) 和总贡献 \(ans\) 的贡献,直接加是不对的,应为对于 1 2 1 22 1 2 1 会算成两种,那么各应乘上 \(\frac {\varphi(i)} n\)。做完了,具体细节看代码。

code

Sum Over Subsets

首先 \(\gcd = 1\) 很烦,莫反成倍数为 \(d\) 的答案,记为 \(f_d\),答案则为 \(\sum \mu(d) f(d)\)。那么现在就变成,对于集合 \(s\),算 \(\sum_{A \sub s} \sum_{x \in A} x \sum_{x \in B} x\),那么我们注意到其实就转化成了乘积之和。对于 \(a_i ^ 2\) 的贡献,选择 \(|s| - 1\) 中一个作为 \(A\)\(B\) 没有的,剩下随便选 \(\sum_i a_i ^ 2 (|s| - 1) 2 ^ {|s| - 2}\)。对于 \(a_i \times a_j\) 的情况,若两者都属于 \(A\)\(B\),那么有贡献 \(\sum_{i, j} a_i \times a_j (|s| - 2) 2 ^ {|s| - 3}\)。否则 \(b\) 不包含 \(a_i\),其他随便选有贡献 \(\sum_{i, j} a_i \times a_j 2 ^ {|s| - 2}\)

那么维护一下 \(|s|\)\(|\sum_i a_i|\)\(|\sum_i a_i ^ 2|\) 就做完了。

code

posted @ 2026-07-18 16:44  ACehomoxue  阅读(17)  评论(2)    收藏  举报