2025.1.4 数学与计数1

几天啦终于找时间补上。网络流还差一篇┭┮﹏┭┮,我尽力吧。
[ARC147D] Sets Scores
如果确定了 \(S_1\) 那么只需要确定剩余的集合相较于前一个的变换值,整个序列就确定了。
同样,如果确定了后 \(n-1\) 个集合的变化元素那么一个元素是否在某个集合中,那么就确定了 \(S_1\) 中是否有这个元素,因为如果 \(S_1\) 中的存在状态改变相应的后面的集合都会改变。
假设 \(i\) 存在于 \(S_1\) 时总共出现 \(a_i\) 次,不存在时出现 \(b_i\),显然 \(a_i+b_i=n\)。又容易发现每组变换元素的贡献为 \(\prod _{i=1}^m(a_i+b_i)=n^m\)。所以答案即为 \(m^{n-1}n^m\)。
Frightful Formula
被这道题创飞了。
这种题常用的解决方法就是拆成从第一行与第一列到终点的所有路径的贡献和。
首先 \(a,b\) 的贡献非常好算,因为确定起点终点后向下和向右的步数是确定的。
主要难点在于 \(c\)。首先列出式子:
发现上下界的限制太多,尝试将其分为两个部分。
第一部分很简单,看下一个:
令 \(f(k)=\sum\limits_{i=k-n+2}^{n-2}\binom{k}{i}a^ib^{k-i}\),则原式变为:\(\sum\limits_{k=n-1}^{2n-4}f(k)\)。
(啊,人要没了)
然后递推完事。
Priority Queue 2
首先差分一下将答案转变为 \(\sum\limits^{m}_{j=1} \sum [a_i\ge j]\)。然后枚举外层的 \(j\) 就可以将其转换成 01 序列了。
由于每次都要删除第 \(x\) 小,所以是以 \(n-x+1\) 为边界,\(1\) 的个数会不断向 \(n-x+1\) 靠拢,具体实现不难。
Vladislav and a Great Legend
首先 \((f(X))^k\) 这种东西不可能直接做,考虑拆成下降幂:
可是这样好像还是不太好做,主要难点就在 \(\binom{f(X)}{i}\) 上。
直接做貌似不太方便,考虑组合意义:从 \(X\) 这个点集构成的虚树中选取 \(i\) 条边的方案数。好像可以 dp?
具体的,令 \(dp_{u,i}\) 表示在以 \(u\) 为根的子树加上 \((u,fa_u)\) 这条边构成的“树”能形成的所有虚树中选取 \(x\) 条边的方案数之和。
初始 \(dp_{u,0}=1\) 因为只有 \(u\) 一个点并且其要作为叶子,所以一定会选。
考虑如何转移,在将 \(u\) 与一个子树 \(x\) 合并时:
首先 \(f_{u,i}\gets dp_{u,i}+dp_{x,i}+dp_{x,i-1}\),这里要单独转移是因为我们的初始状态中 \(dp_{u,i}\) 是必选的,而这里显然可以不选。
然后 \(f_{u,i+j}\gets dp_{u,i}\times dp_{x,j}\),\(f_{u,i+j+1}\gets dp_{u,i}\times dp_{x,j}\) 直接转移即可。
选取 \(i\) 个点的方案数之和可以在 dp 的过程中一起统计,实现细节略有点多,这里不多赘述。
随机立方体
首先看到恰好容易想到用二项式定理转换为钦定。
然后就要钦定图中有 \(i\) 个极大值的方案数,首先选出这 \(i\) 个极大值以及它们之间的大小关系:\(\binom{n}{i}\binom{m}{i}\binom{k}{i}i!i!i!\),那么概率如何计算呢?
考虑从大到小考虑钦定出的极大值,发现当前最大的极大值一定是所有极大值控制的 \(nml-(n-i)(m-i)(l-i)\) 个位置中最大的一个数,由于它们的大小关系已经被确定,所以最大值合法的概率为 \(\dfrac{1}{nml-(n-i)(m-i)(l-i)}\),总概率为 \(\prod \limits _{i=1}^k \dfrac{1}{nml-(n-i)(m-i)(l-i)}\)。
嗯,没了。
基础寄术练习题
先做 \(k=1\)。
我们先选出组成 \(a\) 数组的集合。
然后思考一下如何求 \(\sum\limits_p \dfrac{1}{\prod\limits_{i=1}^n s_i}\),首先这个东西是不可能放在 dp 中或者使用式子直接计算的,因为 \(s\) 与排列顺序有关,而我们显然不可能支持这种量级的算法。
思考 \(\prod\limits_{i=1}^n \frac{1}{s_i}\) 的组合意义,发现和随机立方体好像!我们知道如果有 \(n\) 类物品,第 \(i\) 类物品有 \(a_i\) 个,要求第 \(i\) 类的最后一个所在位置要在 \(i+1\) 之前的方案数为 \(\prod\limits_{i=1}^n \frac{a_i}{s_i}\),因为总概率为 \(1\) 所以 \(\sum\limits_p\prod\limits_{i=1}^n \frac{a_i}{s_i}=1\),所以 \(\sum\limits_p\prod\limits_{i=1}^n \frac{1}{s_i}=\prod\limits_{i=1}^n\frac{1}{a_i}\)!
然后直接 \(n^2\) dp 就可以啦。
接下来思考 \(k=2\) 时该怎么做。发现此时相当于贡献乘了一个 \(a_1\),不过问题就在于如何确定哪一个是 \(a_1\)。
尝试枚举 \(a_1\) 是哪一个,直接限制 \(a_1\) 在第一位不太方便,考虑容斥。具体的,钦定 \(S\) 集合中的 \(i\) 的最后一个数位置在 \(1\) 好点最后一位的前面,令 \(sum_1=\sum\limits_{i\in S}a_i\),\(sum_2=\sum a_i\) 那么这样方案数为:
具体就是先排序 \(S\) 集合然后将 \(a_1-1\) 个数插进去,最后混入剩余的。
化简一下就可以得到 $\frac{a_1}{S+a_1} $。
答案即为 $\sum\limits_a a_1 \times \prod\limits_i \frac{1}{a_i}\sum\limits_S (-1)^{|S|}\frac{a_1}{a_1+sum_1} $。
令 $dp_{i,j,s,0/1} $ 表示当前考虑到完了 \([1,i]\),已经放了 \(j\) 个数,\(sum_1+a_1\) 为 \(s\),是否选了 \(0/1\)。

熟啦!

浙公网安备 33010602011771号