重庆八中集训 day5
20220618
通用评测号
题意
有 \(N\) 个数字,每次给其中一个数字加上 \(1\),然后求所有数字 \(\ge b\) 的时候,\(\ge a\) 的数字的期望个数。
题解
怎么办?
拆贡献,求每个数字 \(=a\) 的时候存在 \(<b\) 的燃料仓的概率即可。所有燃料舱等价,\(\times N\) 就是答案。
怎么求?钦定有 \(p\) 个没半满,那么容斥系数是 \(\binom{n - 1}{p} (-1) ^ {p - 1}\),然后问题变成了,给你一个序列,然后里面的数字的值域为 \([0, p]\),然后 \(a\) 个 \(0\) 之前一个数字不会出现 \(b\) 次以上。
怎么办?可不可以,考虑 \(\text{EGF}\) \(f(x) = \sum_{i < b} \frac{x ^ i}{i!}\),之后答案就是,我们枚举每个 \(0\) 的位置
这玩意可以 \(O(N ^ 3 \log N)\),写一发。
Math Ball
题意
\(N\) 种球,每种球无限个,你最多拿 \(W\) 个球,第 \(i\) 种球有权值 \(c_i\),假如第 \(i\) 种球拿了 \(k_i\) 个,那么这次拿球的权值是 \(\prod _{i = 1} ^ n k_i ^ {c_i}\),求所有方案的权值和,对于 \(998244353\) 取模。
题解
前置知识:
- 普通幂和下降幂的转化
或者是
- 对于一个 \(f_n = \binom{n + m}{m}\) 的 \(\text{OGF}\) 就是 \(\left(\frac{1}{1 - x}\right) ^ {m + 1}\)
证明可以考虑对于 \(m\) 归纳,因为有组合恒等式 \(\binom{n + m + 1}{m + 1} = \sum_{i = 0} ^ n \binom{i + m}{m}\),每次卷上一个 \(\frac{1}{1 - x}\) 相当于就是把原来的系数求和。
我们考虑对于原来的问题就求解,考虑原先的最多选 \(W\) 个可以使用转化为指数上的用生成函数来限制。
考虑第二类斯特林数,一次求一行就可以用,我们可以把 \((1-x ) ^ {l + 1}\) 变成自变量。然后可以分治 NTT 求,但是怎么说,考虑到还有一个 \(x ^ l\) 其实不好搞,但是发现他和 \(l + 1\) 的次数就差一个,所以最后我们的 \(\left (\frac{1}{1 - x}\right) ^ {m}\) 的项,必定带着一个 \(x ^ {m - n}\) 就好了。
怎么统计答案,我们考虑 \(g_p x ^ {p - n} \left(\frac{1}{1 - x}\right) ^ p\) 对于某个 \(x ^ r\) 的贡献,\([x ^ {r - p + n}]\left( \frac{1}{1 - x}\right) ^ p = \binom{r + n - 1}{p - 1}\)。
然后对于所有灯 $ r\in [0, W - p + n]$ 求一下和,\(\sum_{r = 0} ^ {W - p + n} \binom{r + n - 1}{p - 1} = \binom{W + n}{p}\),证明就是考虑 \(\sum_{l = 0} ^ n \binom{l}{k} = \binom{n + 1}{k + 1}\),然后做完了。
最后写出来就应该是 \(\sum_{i = N} ^ {\sum c + N} \binom{W + N}{i} g_p\)。
第二类斯特林数公式:\({n\brace m} = \sum_{i = 0} ^ m \frac{(-1) ^ {m - i}i ^ n}{i! (m- i)!}\)。
[AGC038E] Gachapon
题意
有一个随机数生成器,生成 \([0, N)\) 之间的整数,第 \(i\) 个整数被生辰的概率是 \(\frac{A_i}{S}\), 其中 \(S = \sum_i A_i\),这个随机数生成器一直运行,直到对于 \(\forall i \in [0, N)\),\(i\) 的出现次数大于 \(B_i\)。问这个随机数生成器运行的期望次数。
题解
首先考虑 min-max 反演,令 \(E\left(\max(T)\right)\) 表示 \(T\) 集合内最大的一个出现次数大于 \(B_i\) 的整数出现了的时间,而 \(E\left(\min(T)\right)\)。我们根据 min-max 反演公式,应该有
然后发现,我们想一下,对于一个集合来说他们的 \(\min(T)\) 怎么求,不妨设这个 \(T\) 集合里有 \(m\) 个元素,编号分别为 \(1, 2, 3, \ldots, m\),然后答案应该是
表示每个东西的选择次数都没有超过 \(B_i\) 的期望时间。我们+1 就是所求
这玩意,然后我们发现,每次如果添加一个元素,动的只有上面的 \(\sum_{i} c_i\) 还有 \(\sum_{j} A_j\),于是可以开一个 \(f(i, j, k)\) 表示做到第 \(i\) 个,然后 \(\sum A = j, \sum c = k\) 的期望时间,我们可以在最开头的时候令 \(f(0, 0, 0) = -1\),这样就可以最后避免加上1什么的了。
[AGC034E] RNG and XOR
题意
有一个随机数生成器,生成 \([0, 2 ^ N - 1]\) 之间的整数。你开始有一个 \(x = 0\),每次随机生成一个 \(y\)(生成 \(y\) 的概率为 \(p_y\)),然后 \(x\) 异或上 \(y\),求 \(x\) 第一次变成 \(i\) 的期望操作次数 \(f_i\)。
题解
我们考虑一个 \(dp\),然后
这玩意你转成集合幂级数,然后 \(F = F * P + I - 2 ^ Nx ^ {\empty}\) 然后,这玩意你考虑求出来 \(\hat{F(x)} = \frac{2 ^ n(x^{\empty} - I(x))}{I(x) - \hat{P(x)}}\),然后就可以算了,但是 \(I(\empty) - \hat{P(\empty)} = 0\),不能直接除过去,我们考虑 \(f(\empty) = \sum_{S \in 2 ^ U} \hat{f(S)}\) 即可,我们就可以解出来 \(\hat{f(\empty)} = -\sum_{S \in 2 ^ U, S \not = \empty} \hat{f (S)}\)。