当前位置: 首页 > news >正文

计数臭中杯训练

过年前就写好了,玩疯了忘记发了。。。

前置

\(s(n, m)\) 为第一类斯特林数,\(S(n, m)\) 为第二类斯特林数。

上升幂转普通幂:\(x^{\overline{n}} = \sum_{k}s(n, m)x^k\)

普通幂转上升幂:\(x^n = \sum_k S(n, k)(-1)^{n - k}x^{\overline k}\)

普通幂转下降幂:\(x^n = \sum_{k}S(n, k)x^{\underline{k}}\)

下降幂转普通幂:\(x^{\underline{n}} = \sum_{k} s(n, k)(-1)^{n - k}x^k\)


贝尔数:\(B_n\),表示基数为 \(n\) 的集合的划分方式的数目,有 \(B_{n + 1} = \sum_{k = 0}^n \binom{n}{k}B_k\)

且根据定义 \(B_n = \sum_{i = 0}^n S(n, i)\)


卡特兰数:\(C_n = \sum_{i = 0}^{n - 1} C_iC_{n - 1 - i} = \binom{2n}{n} - \binom{2n}{n + 1}\)


\(S_m(n) = \sum_{k = 0}^{n - 1}k^m = \frac{1}{m + 1}\sum_{k = 0}^m\binom{m + 1}{k}B_kn^{m + 1- k}\)

其中 \(B\) 为伯努利数。将 \(n = 1\) 带入可得到伯努利数的递推式 \(\frac{1}{m + 1} \sum_{k = 0}^{m}\binom{m + 1}{k}B_k = [m = 0]\)


min-max 容斥:\(\underset{i\in S}{\max} x_i = \sum_{T \subseteq S} (-1)^{|T| - 1} \underset{j \in T}{\min}(x_j)\)\(\min\) 同理。

比较重要的是 min-max 容斥可以推广到期望上,即有:

\[\begin{align}E(\max x_i) = \sum_{T \subseteq S}(-1)^{|T| - 1} E(\min x_j) \\E(\min x_i) = \sum_{T \subseteq S}(-1)^{|T| - 1} E(\max x_j) \end{align} \]

还能够更加加强,有:

\[\operatorname{kthmin}(S) = \sum_{T \subseteq S} (-1)^{|T| - k} \binom{|T| - 1}{k - 1} \max(T) \\ \operatorname{kthmax}(S) = \sum_{T \subseteq S} (-1)^{|T| - k} \binom{|T| - 1}{k - 1} \min(T) \]

期望同理加强。

从数论角度可得 gcd-lcm 容斥:\(\operatorname{lcm}(S) = \prod_{T \subseteq S, T \not = \varnothing} \gcd(T)^{-1^{|T| - 1}}\)

ARC121E

不在祖先很困难,考虑将排列转化为逆排列,那么要求 \(p_i\) 不在 \(i\) 子树内,可以 DP。

考虑求 \(g_i\) 表示钦定 \(i\) 哥不合法,容斥得到答案为 \(\sum_{i = 0}^n(-1)^ig_i(n - i)!\)

\(f_{u, i}\) 表示 \(u\) 子树内钦定 \(i\) 个不合法,转移是背包卷积。

ABC266G

二项式反演板子。

\(f_i\) 为钦定 \(i\)RG,那么 \(f_i = \binom{n - 1}{i} \binom{n - 2i}{r - i} \binom{n - r - i}{g - i}\)。反演 \(g_i = \sum_{j = 1}^n (-1)^{j - i}\binom{j}{i}f_j\)

P4859

做过,弱智二项式反演板子。

P6478

还是板子,我草没招了。

\(f_{u, i}\) 表示 \(u\) 子树内钦定 \(i\) 对非平局,转移是背包卷积。

P8329

\(f(S)\) 为第一棵树的非叶子集合恰好为 \(S\) 的方案,\(g(S)\) 同理第二棵树。记 \(U\) 为全集,则:

\[Ans = \sum_{S \cap T = \varnothing, S \cup T = U} f(S)g(T) \]

不好算,考虑容斥,令 \(f'(S)\)\(g'(S)\) 表示非叶子集合包含于 \(S\) 的方案数。

\[\begin{align} Ans &= \sum_{S \cap T = \varnothing, S \cup T = U} \sum_{S' \subseteq S, T'\subseteq T} f'(S')g'(T')(-1)^{|S| - |S'| + |T| - |T'|} \\ &= \sum_{S \cap T = \varnothing} f'(S)g'(T)(-2)^{n - |S| - |T|} \end{align} \]

对于这个 dp,令 \(dp_{i, j, k}\) 表示到 \(i\)\(|\{1, \cdots, i\} \cap S| = j\)\(|\{i + 1, \cdots, n\} \cap T| = k\),且为 \((1, i]\) 选好了第一棵树的父亲,\([1, i)\) 选好了第二棵树的父亲。原因是 \(i\)\(i - 1\) 过来时我们只知道 \(i \sim n\)\(k\)

  1. \(i \in S\)\(j \times k \times dp_{i - 1, j, k} \to dp_{i, j + 1, k}\)
  2. \(i \in T\)\(j \times k \times dp_{i - 1, j, k} \to dp_{i, j, k - 1}\)
  3. \(i \not \in S \wedge i \not \in T\)\(-2 \times j \times k \times dp_{i - 1, j, k} \to dp_{i, j, k}\)

P4609

首先 \(n\) 将排列分为左右两个部分,考虑将被前缀和后缀 \(\max\) 挡住的与 \(\max\) 分成一组,组内之间不能交换。

那么就是第一类斯特林数,答案为 \(s(n - 1,A + B - 2)\binom{A + B - 2}{A - 1}\)

P6620

下降幂多项式和组合数相乘有很好的性质,具体来说 \(\binom{n}{k}k^{\underline{m}} = \binom{n - m}{k - m}n^{\underline{m}}\)

考虑将多项式 \(\sum_{i = 0}^{m} a_ik^i\) 转化为下降幂多项式 \(\sum_{i = 0}^m b_ik^{\underline{i}}\)

\[\begin{align} \sum_{i = 0}^m a_ik^i &= \sum_{i = 0}^m a_i \sum_{j = 0}^i S(i, j)k^{\underline{j}} \\ &= \sum_{i= 0}^{m} k^{\underline{i}} \sum_{j = i}^m S(i, j)a_j \end{align} \]

因此 \(b_i = \sum_{j = i}^m S(i, j)a_j\)

\[\begin{align} Ans &= \sum_{k = 0}^n \sum_{i = 0}^m b_i k^{\underline{i}} x^k \binom{n}{k} \\&= \sum_{i = 0}^m b_i n^{\underline{i}} \sum_{k = i}^n \binom{n - i}{k - i} x^k \\&= \sum_{i = 0}^m b_i n^{\underline{i}}x^i \sum_{k = 0}^{n - i} \binom{n - i}{k} x^k \\&= \sum_{i = 0}^m b_i n^{\underline{i}}x^i(x + 1)^{n - i} \end{align} \]

CF1278F

要求式子为 \(\sum_{x = 0}^n \binom{n}{x} p^x(1 - p)^{n - x}x^k\),将 \(x^k\) 用下降幂拆一下然后推一推式子得到答案为 \(\sum_{i = 0}^kS(k, i)\binom{n}{i}i!p^i\)

其中 \(p = \frac{1}{m}\),最后还要除以概率 \(p^n\)

P3175

\(E(\max(S))\)\(S\) 中最晚出现元素的期望时间,有 min-max 容斥 \(E(\max(S)) = \sum_{T \subseteq S, T \not= \varnothing}(-1)^{|T| - 1}E(\min(S))\)

\[E(\min(S)) = \frac{1}{1 - \sum_{T \cap S = \varnothing} p_T} \]

这是好求的,高维前缀和一下即可。

uoj424

两个串同构意味着笛卡尔树形态相同,考虑不同构的情况,由于最大值优先取下标小的,所以我们可以将向左走看作 \(+1\),向右走看作 \(+0\),那么序列中只能出现 \(1 \sim m\) 要求最长左链(这里的意思是向左儿子走最多的链)长度 \(\leq m\),并且最终树上要出现所有的数。

于是我们转化为对笛卡尔树计数,不妨将笛卡尔树转化为括号序列,具体地令叶节点为 \(()\)。假设左儿子的括号序列为 \(s_l\),右儿子为 \(s_r\),那么这个结点对应的括号序列为 \((s_l)s_r\)。于是转化为括号串计数。

此时我们将 \((\) 视作 \(+1\)\()\) 视作 \(-1\),那么要求变为不能碰到 \(y = x + m + 1\)\(y = x - 1\) 两条直线,反射容斥即可。

P5825

本质是在求欧拉数,今年 WC 讲了这个。但我不会那么高级的做法。

先恰好转钦定,进行二项式反演。钦定 \(k\) 个位置升高,此时序列被分成了 \(n - k\) 个递增段,我们需要计数将 \(1 \sim n\) 放入 \(n - k\) 个非空集合且每个集合不为空。

对空集合容斥,设 \(f(k)\) 为放入 \(k\) 个有标号集合的方案,可以得到 \(f(k) = \sum_{i = 0}^k \binom{k}{i}(-1)^i(k - i)^n\)

卷积一下就行了。

P10004

P5825 的二维版本,首先二项式反演一下容易做到 \(O(n^3)\) 二维二项式反演算答案,于是只需要求 \(f_{i, j}\) 表示钦定原排列有 \(i\) 个上升对,反排列有 \(j\) 个上升对。

接下来考察原排列上升段的性质,由于数值和下标都上升,所以原排列上升段对应的反排列的位置的值也是递增的。

非常精妙的一步转化,令 \(c_{x, y}\) 表示原排列中第 \(x\) 个上升段中有 \(c_{x, y}\) 个元素划分在第 \(y\) 个上升段中。这样形成的矩形有两个约束:

  • 所有元素的总和为 \(n\)
  • 任意行、列总和不为 \(0\)

对满足第一个条件的矩形计数是简单的,设为 \(t_{x, y} = \binom{n + xy - 1}{xy - 1}\)

不妨进行容斥,令 \(g_{i, j}\) 为原排列与反排列分别有 \(x\)\(y\)上升段的方案数,也就是合法矩形的方案数。枚举为 \(0\) 的行列数量,我们得到:

\[t_{x, y} = \sum_{a \leq x}\sum_{b \leq y} \binom{x}{a} \binom{y}{b} g_{a, b} \]

那么二项式反演一下,再用与开头所提类似的前缀和技巧优化即可做到 \(O(n^3)\)

P3349

朴素 DP 设 \(f_{i, j, S}\) 表示点 \(i\) 在图中对应点 \(j\)\(i\) 子树内的点对应集合 \(S\)。因为要枚举子集所以复杂度很高。

这么做复杂度高的原因是不同的点的对应点不能相同,在状态里记录了 \(S\)

现在我们需要 \(n\) 个点恰好对应到 \(S\) 中的点,不妨容斥,计算选择 \(S\) 中的点的子集的方案数,即钦定 \(U/S\) 的点不选。转移系数为 \((-1)^{(n - |S|)}\)

DAG 计数

\(n\) 个点的带标号 DAG 进行计数。

\(i\) 个点的带标号 DAG 数量为 \(f_i\),考虑进行容斥,钦定 \(j\) 个点入度为 \(0\),这 \(j\) 个点可以随意向另外 \(i - j\) 个点连边。于是有:

\[f_i = \sum_{j = 1}^i (-1)^{j - 1}\binom{i}{j}2^{(i - j)j}f_{i - j} \]

\(O(n^2)\) 即可完成。

P11714

承上,DAG 容斥模板题。

\(F_S\)\(S\) 中的点强连通的方案数,\(G_S\)\(S\) 内的点缩成若干个入度为 \(0\) 的点的方案数,\(E_{S, T}\)\(S\)\(T\) 的边数。

\(F_S = 2^{E_{S, S}} - \sum_{T \subseteq S, T \not = \varnothing}(-1)^{?}G_T2^{E_{T, S - T} + E_{S - T, S - T}}\)

? 处应该是缩成点的数量,但是我们并不知道这个,所以考虑把容斥系数直接计入 \(G\),令 \(G_{S}\)\(S\) 内的点缩成奇数个点(入度为 \(0\))的方案数减去偶数个点的方案数。

此时 \(F_S = 2^{E_{S, S}} - \sum_{T \subseteq S, T \not = \varnothing}G_T2^{E_{T, S - T} + E_{S - T, S - T}}\)

考虑如何转移 \(G\),会发现缩点后的几个 SCC 之间没有关系,于是考虑钦定 \(\operatorname{lowbit}(S)\) 所属的 SCC 为最新加入的。

\(G_S = F_S - \sum_{T \subset S, \operatorname{lowbit}(S) = \operatorname{lowbit}(T)} F_TG_{S - T}\)

注意这里的转移顺序一定是先算 \(G_S\) 不加 \(F_S\),再算 \(F_S\),再把 \(F_S\) 加到 \(G_S\) 上。

最后考虑怎么算 \(E_{S, T}\) 会发现用到的形式只有 \(E_{T, S - T}\)\(E_{S, S}\),后者单独算,前者每枚举一个 \(S\) 就算一个即可。

具体有:

\(E_{T, S-T} = E_{T + x, S - T - x} - \operatorname{popcount}(out_x \cap (S - T)) + \operatorname{popcount}(in_x \cap T)\)

\(E_{S, S} = E_{s - x, s - x} + \operatorname{popcount}(in_x \cap S) + \operatorname{popcount}(out_x \cap S)\)

于是我们只需要 \(O(3^n)\) 就可以解决这个问题。

ARC105F

考虑对二分图的染色方案计数。设为 \(f(S)\)

接着会发现连通性不好刻画,不妨把这个条件容斥掉,设为 \(g(S)\)。转移 \(g(S)\) 时枚举子集 \(T\) 为黑点即可。

转移 \(f(S)\) 时与上题类似枚举 \(\operatorname{lowbit}(S)\) 所在集合容斥即可。

http://www.jsqmd.com/news/393693/

相关文章:

  • Xinference-v1.17.1功能实测:多模态模型表现
  • 深圳市湘凡科技有限公司 Android App 应用开发工程师面试题库
  • 新手必读!Qwen3-ForcedAligner-0.6B语音识别工具详解
  • Fish-Speech-1.5与Java面试题结合:编程知识语音学习系统
  • 一键生成专业拆解图:Banana Vision Studio实操指南
  • RexUniNLU开源模型价值:低成本替代微调方案,中小企业NLU能力建设指南
  • Qwen3-ASR-1.7B语音识别:5分钟搞定中英日韩转写
  • QAnything与GitHub Actions集成:PDF解析自动化测试流水线
  • MedGemma X-Ray多场景部署:单机版/服务器版/边缘设备适配方案
  • Fish-speech-1.5跨语言合成:中文语音读英文文本的实现
  • 保姆级教程:用SenseVoice搭建智能语音客服系统
  • 零配置玩转AI:一个镜像搞定ChatGLM/星火/混元等主流大模型调用
  • InstructPix2Pix与Matlab的科学图像处理应用
  • Nunchaku FLUX.1 CustomV3镜像免配置:预装ComfyUI Manager与常用自定义节点
  • Qwen3-Reranker新手入门:从安装到实战全流程解析
  • 全任务零样本学习-mT5分类增强版中文-base:零样本分类稳定性实测报告
  • Qwen3-Reranker-0.6B实战案例:跨境电商商品描述与用户搜索匹配
  • 网络安全加固:Qwen3-ForcedAligner API防护方案
  • 无需Prompt!Nano-Banana智能匹配描述词生成服装拆解图
  • Qwen3-Reranker-0.6B实战:开发效率提升35%的秘诀
  • 学术专著撰写新帮手:AI专著生成工具,节省大量时间精力
  • 阿里开源ViT图像识别:日常物品分类实战,零基础入门指南
  • Z-Image Turbo在嵌入式系统上的轻量化部署
  • Qwen3-TTS语音合成保姆级教程:从安装到多语言生成
  • 从零开始:用MedGemma构建医学影像问答系统
  • 小白必看:cv_resnet50_face-reconstruction镜像使用避坑指南
  • lychee-rerank-mm对比评测:与传统文本检索模型的性能差异
  • AI专著写作工具大揭秘,让你从写作小白变身专著能手
  • DeerFlow保姆级教程:DeerFlow中WebUI主题切换与无障碍访问(a11y)配置
  • 无需代码基础:Qwen2.5-7B-Instruct本地部署全攻略