前言
这一周搞数学,于是我就顺手开了一篇博客,记录一些我认为比较好的题目。这次的题解准备写的简略一些,并且会总结每道题的关键点。希望能对自己有帮助、提升。
——upd on 2025.3.17
有标号 DAG 计数
要点总结
- 弱连通图生成函数的 exp 就是任意连通图的 EGF
- \(i\times j={i+j\choose2}-{i\choose2}-{j\choose2}\)
- 遇到限制性强的信息直接容斥
题解
首先转化成对任意连通图计数再求 ln,对于任意连通图考虑入度为零的点个数。这个信息限制了我们的转移,于是我们钦定入度为零的点个数然后简单容斥。设 \(a_{i,j}\) 表示 i 个点钦定 j 个入度为零,\(b_{i,j}\) 表示恰有 j 个入度为零,就有:
经过一番推导化简归类得到:
令:
就有:
硬币游戏
要点总结
- 构造一个长度为 l 的特定 01 串概率是 \(1\over2^l\)
- 到一个字符串结束的条件
题解
设 \(f_0\) 表示任意长度的一个串合法的概率,\(f_i\) 表示第 i 个人获胜概率,就有:
如果我们强制以某个串结尾,那么在这个串接在一个任意长的串后不一定行。因为有可能这个串的前缀恰巧是另一个串后缀,所以去重,有:
于是就可以高消 \(O(n^3)\) 做完了。
情侣?给我烧了!
要点总结
- EGF 解决计数
- Catalan 数的生成函数
题解
注意:此题题解只保留关键步骤,但是还是写了很多式子,这道题有点复杂。
这道题原始式子很容易推出:
其中 \(D_{i}\) 表示将 i 对情侣错开排座位的方案数。现在关键是求出 \(D_i\)。
经观察可发现:
于是我们就把 \(f_{n,k}\) 写开,之后会发现 \(\sum\) 里面只有与 k 有关的和与 n-k 有关的东西,可以想到卷积。于是有:
令 \(G_i={D_i\over i!^2}\)于是有:
这里其实已经结束,我们暴力还原回合式即可。但还可以继续拆解,考虑求导:
化简就能得到:
把 \(G_i\) 还原回去得到:
整数的lqp拆分
要点总结
- 生成函数计数
- 特征多项式基本应用
题解
我们套路性地套上生成函数,发现其实 \(a_i\) 的值我们不关心,反倒是 \(a_i\) 的个数,设答案为 \(G(x)\),就有:
化简得到:
分母可变成递推式:
乘分子得到:
然后你就可以把递推式拿去解特征方程求通解了,答案是:
城市规划
要点总结
- 简单有标号无向连通图的生成函数的 exp 是简单有标号无向图的 EGF
题解
和此博客第一题类似,考虑 exp 的组合意义,然后求简单有标号无向图的 EGF 就做完了。
付公主的背包
要点总结
1.\(\prod\) 转 \(\exp\sum\ln\)
题解
面对 \(\prod\) 不好处理,难以战胜,我们考虑把 \(\prod\) 转化成 \(\exp\sum\ln\)。对于每个 V 一起计算。
在处理 \(\ln\) 的时候我通过瞎猜找到的其合式:
下面给出证明:
然后在 Vi 处暴力赋值累加最后一遍 exp 结束。
染色
要点总结
- 恰好转钦定
- 凑卷积形式
题解
套路。设 \(f_i\) 表示恰好有 i 种颜色出现 S 次,\(g_i\) 表示钦定有 i 种。考虑后者更容易表示,我们分步统计然后乘法原理。
具体的,我们先确定选的 i 种颜色,然后分配位置和顺序,最后考虑没选的怎么填。用 \(g_i\) 通过二项式反演表示 \(f_i\) 即可。
无聊的水题
要点总结
- 度数+有标号无根树联想到 prufer 序列
- EGF 的组合意义
题解
题目让你求 \(n\) 个点且最大点度为 \(m\) 的有标号无根树个数。
我们可以从上面的题意中找到一些关键字眼:最大点度、有标号无根树。这些无不指向同一个东西:\(prufer\) 序列!
首先每个 \(prufer\) 序列都对应一个有标号无根树,其次一个数在序列中的出现次数加一就是其度数,所以我们将题目转化成下面形式:
在序列上填数,序列长度为 \(n-2\),填数的范围是 \([1,n]\),需要满足出现次数最多的数出现了 \(m-1\) 次,求方案数。
因为最多恰好出现 \(m-1\) 次不好计数,所以容斥。考虑出现次数小于 \(m\) 次的数量减去小于 \(m-1\) 的数量。现在问题被进一步简化,考虑求最多出现次数小于 \(m\) 次的填数方案数。
解决这种组合问题最简洁的我认为是 \(EGF\)。尝试用 \(EGF\) 去刻画这个问题,我们先从最简单的开始。考虑只填一个数,其出现次数的 \(EGF\) 为 \(F(x)=\sum\limits_{i=0}^m{x^i\over i!}\)。我们知道 \(EGF\) 相乘会多出一个组合数,也就是说 \(EGF\) 相乘可以刻画组合问题。对于此题也是如此。我们将 \(F(x)\) 连续乘 \(n-2\) 次,就刻画了将 \(n\) 种不同的数填进长度为 \(n-2\) 的序列的过程。所以答案就是 \([x^{n-2}]F(x)^n\)。多项式快速幂可用不同方法解决,这里用的是 \(O(n\log n)\) 的做法。