数量关系
解题技巧
容斥法和补足法

一、题型描述

已知:

x1+x2++xn=Sx_1 + x_2 + \dots + x_n = S

并且每个变量都有上限限制:

0ximi0 \le x_i \le m_i

非负整数解的个数


二、常用方法

1. 无限制分配公式(基础)

当没有上限限制时:

解数=(S+n1n1)\text{解数} = \binom{S+n-1}{n-1}

这是 Stars and Bars(插板法)的基础公式,所有有限制的题都可以从它扩展。


2. 容斥法(通用型,任何限制都能用)

步骤

  1. 先算 无限制解数:
T0=(S+n1n1)T_0 = \binom{S+n-1}{n-1}
  1. 逐步剔除 不符合上限的解。

    • 如果第 ii 人超过上限 mim_i:令 xi=xi(mi+1)x_i' = x_i - (m_i+1),再解新的方程。
  2. 用容斥公式:

合法解数=T0(n1)T1+(n2)T2\text{合法解数} = T_0 - \binom{n}{1}T_1 + \binom{n}{2}T_2 - \dots

其中 TkT_k 表示恰好 kk 个人超限后的解数。

特点

  • 优点:适合上限差异大、总数 S 不接近上限总和的题。
  • 缺点:步骤多,计算量可能大。

3. 补足法(缺额法)(高效型,适合总数接近上限总和)

条件

当:

S 接近 m1+m2++mnS \text{ 接近 } m_1+m_2+\dots+m_n

总数接近上限总和,优先考虑补足法。

原理

设:

yi=mixiy_i = m_i - x_i

则:

y1+y2++yn=(m1+m2++mn)Sy_1 + y_2 + \dots + y_n = (m_1 + m_2 + \dots + m_n) - S

此时每个 yi0y_i \ge 0,就是一个无上限分配问题。

公式

解数=((MS)+n1n1)\text{解数} = \binom{(M - S) + n - 1}{n-1}

其中 M=m1+m2++mnM = m_1 + m_2 + \dots + m_n

本题:

  • n=3n=3mi=8m_i=8S=20S=20M=24M=24
  • 缺额总和:MS=4M-S = 4
  • 解数:
(4+3131)=(62)=15\binom{4+3-1}{3-1} = \binom{6}{2} = 15

一步得出。

优点

  • 计算一步到位。
  • 特别适合 “总数接近上限总和” 的题。
  • 考试中可秒算。

三、对比选择

情况方法优点缺点
上限相同 & 总数接近上限总和补足法快速,一步到位不适合差额大时
上限相同但总数差距大容斥法通用性强步骤多
上限不同容斥法任意条件可用计算量较大
无上限基础公式直接算无限制时最简单

四、考试建议

  1. 先看总数与上限总和差距:差距小 → 补足法;差距大 → 容斥法。
  2. 人数少时n4n \le 4)容斥法计算也不复杂,可直接用。
  3. 注意非负整数解公式要熟练背(S+n1n1)\binom{S+n-1}{n-1}(d+n1n1)\binom{d+n-1}{n-1}(补足法)。