2025 北京集训

Day 1

A

首先发现对称差是关键的,而“对称差”这个东西类似异或。所以说,我们只需要知道 \(S_1\) 和每次改变的数即可确定所有 \(S\),不妨设第 \(i\) 次改了 \(a_i\) 的出现情况。

则答案即为 \(\sum\limits_{a}\sum\limits_{S1}\prod\limits_{i=1}^m F(S1,a,i)\),这里我们定义 \(F(S,a,i)\) 表示 \(S_1=S\),变化情况为 \(a\)\(i\) 在所有集合中的出现次数。

显然,\(F(S,a,i)\) 只与 \(S\) 中是否有 \(i\) 有关,所以我们令 \(G(a,i)\) 表示如果 \(i\)\(S\) 出现,\(i\) 在所有集合中的出现次数。

\(F(S,a,i)=[i\in S]G(a,i)+[i\not\in S](n- G(a,i))\)

代回原式,可以发现这是一个乘法分配律,所以我们可以把答案化为 \(\sum\limits_{a} n^m\),也就是 \(m^{n-1}n^m\)

B

我们发现常数不好处理,所以我们希望消去它。我们令 \(G_{i,j}=F_{i,j}+k\),且有 \(G_{i,j}=aG_{i,j-1}+bG_{i - 1,j}\)。解得 \(k=\dfrac{c}{a+b-1}\)

分情况讨论。

1. \(a+b-1\not\equiv 0\pmod{p}\)

直接用 \(G\) 来算即可。此时我们可以考虑每个 \(L\)\(T\) 的贡献,显然是类似格路计数。

2. \(a+b-1\equiv 0\pmod {p}\)

此时有 \(F_{i,j}\equiv aF_{i,j-1}+(1-a)F_{i-1,j}+c\)。无脑设参:\(F_{i,j}-H_{i,j}\equiv a(F_{i,j-1}-H_{i,j-1})+(1-a)(F_{i-1,j}-H_{i-1,j})+c\)

则我们希望有:\(c+H_{i,j}=aH_{i,j-1}+(1-a)H_{i-1,j}\),即常数项能被消掉。

接下来随便找一组看上去比较好算得就行了,例如 \(H_{i,j}=c(i+j)\)

C

首先,对于这类需要求第 \(x\) 小得问题,我们直接做非常不可做。一个常见的 trick 是将其转为 01 序列。在此处,即为:\(\sum\limits_{i=1}^n a_i=\sum\limits_{i=1}^m\sum\limits_{j=1}^n[a_j\ge i]\)

接下来显然可以 DP。但是这样就是立方的了,所以无法通过。发现一个事实是,我们每次操作的 \(X\),和插入的数的值域都是固定的,所以我们应该可以简单的求出操作后的结果。

具体来说,我们设当前有 \(k\)\(1\)(指的是这一次操作前,包括插入 & 删除),新插入的数 \(c\in\{0,1\}\),则我们有 \(n+1-k\)\(0\)

\[\begin{cases} k\gets k-1&n+1-k>x,c=0\\ k\gets k+1&n+1-k<x,c=1\\ k&\text{otherwise} \end{cases} \]

可以发现,如果我们一开始有 \(n+1-k>x\),则我们操作的过程中一定不会出现 \(n+1-k<x\),反之同理。

所以说,我们对于一个 01 序列的操作,最后的结果只取决于最开始 \(1\) 的个数和 \(k\) 次插入中 \(1\) 的个数。

枚举一开始 \(\sum\)\(i\),然后枚举操作中 \(1\) 的个数,最后计算贡献即可。

D

首先有一个经典式子:\(n^k=\sum\limits_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}n^{\underline{i}}\)

所以 \(\sum (f(X))^k=\sum\limits_{i=0}^k\begin{Bmatrix}k\\i\end{Bmatrix}i!\sum\dbinom{F(X)}{k}\)。所以直接树形背包即可。

E

首先二项式反演,将“恰好”转为“钦定”(这里假设钦定了 \(x\) 个)。对于这种填数问题,我们一般分为选数和选位置。

首先这 \(x\) 个极大值的位置显然是没有任何影响的,所以我们不妨把他们从大到小分别放在 \((1,1,1),(2,2,2),(3,3,3),\cdots,(x,x,x)\),并乘上 \(\dbinom{n}{x}\dbinom{m}{x}\dbinom{l}{x}\) 的贡献。

对于剩下位置的填法,实际上是一个经典问题。

(树的拓扑序)

给定一棵树,节点为 \(1\sim n\),问这棵树的拓扑序的个数。

结论:答案为 \(\dfrac{(n-1)!}{\prod\limits_{i\not= root} siz_i!}\)

证明采用数学归纳法即可。

而对于这道题,我们发现我们的限制关系可以转化成下面的图:

因此利用类似的方法,可以解决这道题。

J

单位根反演。

\[\begin{aligned} 原式&=\frac{1}{k}\sum\limits_{i=0}^n\binom{n}{i}p^i(i-i\% k)\\ &=A-\frac{1}{k}\sum\limits_{i=0}^n\binom{n}{i}p^i\sum\limits_{j=0}^{k-1}j[k\mid i-j]\\ &=A-\frac{1}{k^2}\sum\limits_{i=0}^n\binom{n}{i}p^i\sum\limits_{j=0}^{k-1}j\sum\limits_{t=0}^{k-1}\omega_{k}^{ti-tj}\\ &=A-\frac{1}{k^2}\sum\limits_{t=0}^{k-1}\left(\sum\limits_{j=0}^{k-1}\omega_{k}^{-tj}j\right)\left(\sum\limits_{i=0}^n\binom{n}{i}p^i\omega_{k}^{ti}\right)\\ &=A-\frac{1}{k^2}\sum\limits_{t=0}^{k-1}BC \end{aligned} \]

对于 \(A\),我们可以通过简单组合数学求出;对于 \(B\),是小奥经典题;对于 C,是二项式定理。

所以我们可以做到 \(O(k\log p)\)

O

有趣题!

首先我们考虑 \(M=1\)

二项式反演,我们钦定有 \(k\) 个位置满足 \(|P_i-P_{i+1}|=1\),设这个的方案数为 \(g_k\)

而这 \(k\) 个位置可以将 \(P\) 划分成值域上的 \(n-k\) 段,每段长度可以为 \(\ge 1\) 的数。接下来我们将这 \(n-k\) 段重排,可以得到一组合法的排列。

对于一个连续段,如果它长度 \(\not =1\),则它可以递增或递减,否则它只有一种方法。

也就是说,我们可以用生成函数得到,我们的 \(g_k\) 公式,即:

\[\begin{aligned} g_k&=(n-k)![z^n](z+2z^2+2z^3+2z^4+\cdots)^{n-k}\\ &=(n-k)![z^k](1+2z+2z^2+\cdots)^{n-k}\\ &=(n-k)![z^k]\left(\frac{2}{1-k}-1\right)^{n-k}\\ &=(n-k)!\sum\limits_{i=0}^{n-k}\binom{n-k}{i}(-1)^{n-k-i}2^i[z^k](\frac{2}{1-k})^i\\ &=(n-k)!\sum\limits_{i=0}^{n-k}2^i(-1)^{n-k-i}\binom{n-k}{i}\binom{i+k-1}{i-1}\\ \end{aligned} \]

这个东西可以 NTT。然后我们二项式反演的过程也是一个 NTT。


对于 \(m>1\),我们构造 \(Q=P^{-1}\),则有 \(|Q_i-Q_{i+m}|=1\),接下来就转化成了若干个子问题。需要注意的是,\((n-k)!\) 要放到最后乘,我觉得不用多讲。

接下来,我们直接多项式快速幂即可,但是由于数据范围较小,我们完全可以暴力 \(\log^2\) 跑。

posted @ 2025-12-14 21:22  linxuanrui  阅读(4)  评论(0)    收藏  举报