普及组计数题合集

我也就只配做简单的数数题了。
4f712b373466e39bda19c76227617e4d_0

Arena

\(f_{i,j}\) 表示当前考虑 \(i\) 个英雄,这 \(i\) 个英雄初始血量最大值为 \(j\) 的方案数。
显然第一轮中,每个英雄血量都会减少 \(i-1\)

  • \(i-1\ge j\),所有英雄都会在第一轮死亡,显然合法,方案数为 \(j^i-(j-1)^i\)
  • 否则,考虑枚举这一轮后存活的英雄数量 \(k\),这 \(k\) 个英雄剩余血量一定是 \(j-(i-1)\),而死去的 \(i-k\) 个英雄的血量可以在 \([1,i-1]\) 中随意选取,总方案数为

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

时间复杂度 \(O(n^2x)\)

[NOIP2024] 遗失的赋值

首先判一元限制冲突的情况。
考虑 \(n-1\) 个二元关系:

  • \(i\)\(i+1\) 位置都存在一元限制,方案数为 \(v\times (v-1)+1\)
  • 否则,考虑将一元限制排序:
    \(i\) 个和第 \(i+1\) 个一元限制之间有 \(l=c_{i+1}-c_i\) 组二元限制,若不设任何限制有 \(v^{2l}\) 种方案,其中不合法的方案一定是从 \(c_i\) 一直限制到 \(c_{i+1}\),总共 \(v^{l-1}\times (v-1)\) 种。

全部乘起来即可。

分割(divide)

容易发现,一组合法方案的 \(d\) 一定都相同。所以考虑按深度计算,设当前考虑深度 \(dep\)
可以考虑钦定了 \(d_1\) 后确定剩余 \(k-1\) 个的选取方案数,最后再乘上 \((k-1)!\) 即为排列数。
\(maxdep_u\)\(u\) 子树中深度最大的节点的深度,将同层的节点的 \(maxdep\) 排序,设当前考虑的 \(maxdep\)\(b\),大于 \(b\) 的同层节点有 \(sum\) 个,同层中 \(maxdep=b\) 的节点为 \(c_b\) 个,钦定 \(d_1\)\(maxdep=b\) 的节点,则方案数为

\[c_b\times\left(\binom{c_b+sum-1}{k-1}-\binom{sum}{k-1}\right) \]

因为除 \(d_1\) 所对的节点外至少要再选 \(1\)\(maxdep=b\) 的才能满足限制,特别地,\(c_b=k-1\) 时,可以令包含根节点的连通块满足限制,就不需要减 \(\dbinom{sum}{k-1}\) 了。
时间复杂度 \(O(n\log n)\)

[CSP-S2019] Emiya 家今天的饭

首先是一些显然的观察:
\(k\in [2,n]\)。即可满足限制 1。
每行最多选择 \(1\) 个,即可满足限制 2。我们记 \(sum_i\) 为 第 \(i\) 行的 \(a_{i,j}\) 之和,加上不选一共 \(sum_i+1\) 种方案。
故满足限制 1、2 的方案数为

\[\prod_{i=1}^n (sum_i+1)-1 \]

每列最多选择 \(\left\lfloor \cfrac{k}{2}\right\rfloor\) 个,即可满足限制 3。
限制 3 难以刻画,所以我们考虑容斥,即计算存在一列选择的数量大于 \(\left\lfloor \cfrac{k}{2}\right\rfloor\) 个的方案数。不难发现若存在这种情况,必然只会有一列选择的数量大于 \(\left\lfloor \cfrac{k}{2}\right\rfloor\)
考虑枚举这一列,设当前枚举到 \(l\) 这一列:
(以下 \(k\) 的含义改变,请注意)
\(f_{i,j,k}\) 表示前 \(i\) 行,第 \(l\) 列选择了 \(j\) 个,除第 \(l\) 列选择了 \(k\) 个的方案数。转移是容易的:

\[f_{i,j,k}=f_{i-1,j,k}+f_{i-1,j-1,k}\times a_{i,l}+f_{i-1,j,k-1}\times(sum_i-a_{i,l}) \]

时间复杂度 \(O(n^3m)\)
考虑优化。发现我们最后算答案时不关心 \(j,k\) 的值,只关心其大小关系,所以重新设计状态:
\(f_{i,j}\) 表示前 \(i\) 行,第 \(l\) 列比其他列多选 \(j\) 个:

\[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}\times a_{i,l}+f_{i-1,j+1}\times (sum_i-a_{i,l}) \]

为了防止访问负下标,可以令数组第二维整体偏移 \(n\)。时间复杂度 \(O(n^2m)\)

posted @ 2025-10-26 17:58  headless_piston  阅读(5)  评论(0)    收藏  举报