跳转至

组合数学

传说早在 \texttt{114514} 年前,
一位名为忆哀的神灵来到地球,
发现了人类——另一种有智慧的物种。

她觉得这很有趣,为了加速人类文明的发展,
她向人间传下了一类计数问题——十二重计数,
这也正是组合数学的开端。

而只有搞明白这类问题,才能在组合数学上继续深入。

基本原理

求证不等式的方法有几种,最简单的是:

  • 设函数,证明函数恒大于或小于零。

  • 直接对函数求导,尝试证明函数最小值大于零,或最大值小于零。

  • 注意到多项式只要求够多次数多导数,一定会变为零,因此如果不好解决,继续求导,对高阶导数尝试分析其是否恒正或恒负。

注意:

  • 解一元一次不等式 ax>b,需要按照 a>0,a=0,a<0 分类讨论。

  • 解一元一次不等式 ax>b,其中 x\in[m,n],先按照 a>0,a=0,a<0 分类讨论,然后按照 \dfrac{b}{a} 是否落在区间 [m,n] 内。

边界条件:

  1. 二次项系数不含参数且自变量没有限制时,临界条件是 \Delta = 0

  2. 二次项系数含有参数且自变量没有限制时,临界条件是二次项系数为零与 \Delta = 0 联立。

  3. 二次项系数含参数且自变量有限制时,临界条件是二次项系数为零,\Delta = 0 与区间端点处的函数值为零同时联立。

对于更复杂的情况,一般步骤如下:

  • 能否直接求导解决。

  • 能否通过常见变形(本文简单变形部分)后求导。

  • 能否通过隐零点判断。

  • 能否使用放缩技巧。

变形法:

  • 除以单项式变形(x^n)。

  • 整体代换、同构化变形、拆分函数、局部求值。

  • 对数化:对数化是利用对数性质,将函数式中的对数与常数合并,再使用相关不等式进行放缩。例如:

    \ln x+a=\ln(xe^a)。

  • 指数化:指数化是利用指数性质,将式子或者参数转移到指数位置上,以方便放缩。例如:

    xe^x=e^{x+\ln x}(x>0),a^x=e^{\ln a^x}=e^{x\ln a}。

简单不等式

\boxed{e^x\ge x+1,\quad x\in\R}\tag a

证明:设 f(x)=e^x-x-1,那么:

f'(x)=e^x-1

因此,当 x>0 时,f'(x)>0;当 x<0f'(x)<0,因此:

f(x)\ge f(0)=0

e^x\ge x+1,带入 x\gets\ln x 有:

\boxed{x\ge\ln x+1,\quad x>0}\tag b

容斥原理

容斥原理是一种在集合上应用的常用计数方法,其基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来(容),然后再把计数时重复计算的数目排斥出去(斥),使得计算的结果既无遗漏又无重复。容斥原理的核心计数规则可以叙述为:奇加偶减

我们通过一个具体例子来理解。

例 1:将甲、乙、丙、丁四位老师分配到 A、B、C、D 四个班,要求甲不在 A 班,丁不在 B 班,求总分配方案数。

:无限制的方案数为 4! = 24。我们依次减去甲在 A 班的方案数 3!,再减去丁在 B 班的方案数 3!。注意到甲在 A 班且丁在 B 班的方案被减了两次,因此需要加回一次 2!,最终得:

4!-2\times 3!+2!=24-2\times 6+2=14

一般地,对于 n 个集合的并集,容斥原理给出如下公式:

\def\abs#1{\left\lvert{#1}\right\rvert} \abs{\bigcup_{i=1}^{n}A_i}=\sum_{S\subseteq[1,n]\wedge\mathbb Z}(-1)^{\abs S-1}\abs{\bigcap_{i\in S}A_i}

对于三个集合的情形,公式简化为:

|A\cup B\cup C|=|A|+|B|+|C|-|A\cap B|-|A\cap C|-|B\cap C|+|A\cap B\cap C|

将容斥原理与数论结合,可以解决一类关于整除性的计数问题。容易知道,1 \sim nk 的倍数有:

\left\lfloor{n\over k}\right\rfloor

例 2:在 1 \sim 1000 中,有多少个数既不是 3 的倍数,也不是 5 的倍数?

:设集合 A1 \sim 10003 的倍数,B5 的倍数,则:

\def\floor#1{\left\lfloor{#1}\right\rfloor} |A|=\floor{1000\over3}=333\\[0.5em] |B|=\floor{1000\over5}=200\\[0.5em] |A\cap B|=\floor{1000\over15}=66\\[0.5em] |A\cup B|=|A|+|B|-|A\cap B|=467

我们再取补集,答案为 1000 - 467 = 533

鸽巢原理

鸽巢原理又称抽屉原理,是另一个经典的基本计数原理。将 n+1 个物体划分为 n 组,那么至少有一组包含两个及以上的物体。一般化形式:将 n 个物体划分为 k 组,那么至少有一组有大于等于 \left \lceil \dfrac{n}{k} \right \rceil 个物品。

最差原则是鸽巢原理在解题中的常用策略:考虑所有可能情况中,最不利于某事件发生的情况。如果最差的情况都能被满足,那么其余所有情况自然也能被满足。

n+1 个物体,划分为 n 组,那么有至少一组有两个(或以上)的物体。这个定理看起来比较显然,证明方法考虑反证法:假如每个分组有至多 1 个物体,那么最多有 1\times n 个物体,而实际上有 n+1 个物体,矛盾。

n 个物体,划分为 k 组,那么至少存在一个分组,含有大于或等于 \left \lceil \dfrac{n}{k} \right \rceil 个物品。

推广的形式也可以使用反证法证明:若每个分组含有小于 \left \lceil \dfrac{n}{k} \right \rceil 个物体,则其总和 S\leq (\left \lceil \dfrac{n}{k} \right \rceil -1 ) \times k=k\left\lceil \dfrac{n}{k} \right\rceil-k < k(\dfrac{n}{k}+1)-k=n 矛盾。

此外,划分还可以弱化为覆盖结论不变。给定集合 S, 一个 S 的非空子集构成的簇 \{A_1,A_2\ldots A_k\}

  • 若满足 \bigcup_{i=1}^k A_i 则称为 S 的一个覆盖(cover)
  • 若一个覆盖还满足 i\neq j\to A_i\cap A_j=\varnothing 则称为 S 的一个划分。

鸽巢原理可以有如下叙述:对于 S 的一个覆盖 \{A_1,A_2\ldots A_k\} 有至少一个集合 A_i 满足 \left\vert A_i \right\vert \geq \left\lceil \dfrac{\left\vert S \right\vert}{k} \right\rceil

组合和排列

组合数和排列数

排列数

我们先来定义排列数。排列数(Permutation)A(n,m) 表示:从 n 个物品中,选出 m 个进行排列的方案数。

排列数也有其他的记法,例如 A\begin{smallmatrix}n\\m\end{smallmatrix},但这种写法较为繁琐。在早期的文献中,排列数也记为 P(n,m),其中 P 表示 Permutation(排列)。

我们来推导排列数的计算公式。按照排列的定义,我们依次分析第 i 个位置有多少种选择:

f'(x)+p(x)f(x)>q(x)

我们先简单说一下简单的微分方程怎么解,我们将式子最终化为:

u(x)\d x=v(y)\d y

然后两边求积分,化简即可。

我们考虑一个比较简单的形式,p(x)=0,即

f'(x)=q(x)

Q'(x)=q(x),则:

  • 若符号为 =,则 f(x)=Q(x)+C

由此,当 m=n 时:

A(n,n)=n!=n(n-1)(n-2)\dots 1

特殊的,我们定义:

0!=1

而一般规定 A(n,m)n\ge m,若 n < m,则规定 A(n,m)=0

为什么定义 0!=1

这个定义在组合意义下是显然的:从 0 个物品中选取 0 个进行排列,只有一种方案(即什么都不选)。另外,这个定义也使得阶乘公式 n! = n \times (n-1)!n=1 时仍然成立。

组合数

组合数(Combination)C(n,m) 表示:从 n 个物品中,选出 m 个的方案数(不考虑顺序)。

组合数也有其他的记法,例如 C\begin{smallmatrix}n\\m\end{smallmatrix},其中 C 表示 Combination(组合)。在学术文献中,通常使用二项式系数的记法:

{n\choose m}

我们可以从排列数和组合数的关系来推导组合数的公式。

我们在排列中,从 n 个物品中选择 m 个进行排列,这个过程本质上可以分解为两个步骤:

  1. n 个物品中选择 m 个,即 C(n,m)
  2. 将这 m 个进行排列,即 A(m,m)=m!

根据乘法原理:

A(n,m)=C(n,m)\times A(m,m)

因此:

\boxed{C(n,m)={A(n,m)\over A(m,m)}={n!\over(n-m)!m!}}

性质m! 整除任何连续的 m 个整数的乘积。

证明:通过构造组合数即可证明。对于任意连续的 m 个整数 n, n-1, \dots, n-m+1,它们的乘积等于 A(n,m),而 C(n,m) = \frac{A(n,m)}{m!} 是一个整数,因此 m! 必然整除 A(n,m)

组合数具有许多优良的性质,这些性质在计数问题中有着广泛的应用。下面我们逐一介绍这些性质。

基本性质

从组合数的定义可以直接得到以下性质:

\boxed{\tag1{n\choose m}={n\choose n-m}}

这个性质的组合意义是:从 n 个元素中选出 m 个,等价于选出 n-m 个不选。

同样由定义可以推导出:

\boxed{{n\choose m}={n\over m}{n-1\choose m-1}\tag{1 II}}

这个公式在递推计算中非常有用。

另一个重要的恒等式是:

\boxed{{n\choose m}{m\choose k}={n\choose k}{n-k\choose m-k}}\tag{1 III}

这个等式的组合意义是:从 n 个中选 m 个,再从 m 个中选 k 个,等价于先从 n 个中直接选 k 个,然后再从剩下的 n-k 个中补选 m-k 个。

在结束组合数的基本性质之前,我们还需要注意到一个重要的结论:若

{n\choose a}={n\choose b}

则有两种情况:

首先,若

a=b

结论是显然的。否则,应用性质 (1),得

a+b=n

这也自然成立。

递推关系

组合数满足一个经典的递推公式:

\boxed{\tag2{n\choose m}={n-1\choose m}+{n-1\choose m-1}}

这个递推式的组合意义是:考虑 n 个元素中的某个特定元素,将所有方案分为两类——选这个元素和不选这个元素,分别对应右边的两项。这个递推式在计算组合数和裂项求和中非常有用。

这个递推式也称作帕斯卡法则,其有一个经典的推论,朱世杰恒等式是组合数的一阶求和公式。元朝数学家朱世杰在《四元玉鉴》中,利用垛积术、招差术给出:

\sum _{i=a}^{n}{\binom {i}{a}}={\binom {n+1}{a+1}}

或以 m-1n 再与上式作差,写成:

\sum _{i=m}^{n}{\binom {i}{a}}={\binom {n+1}{a+1}}-{\binom {m}{a+1}}

可以反复使用帕斯卡法则合并左式首两项。朱世杰恒等式可应用于等幂求和问题。例如:

\sum _{i=1}^{n}i=\sum _{i=1}^{n}{\binom {i}{1}}={\binom {n+1}{2}}

\sum _{i=1}^{n}i(i+1)=2\sum _{i=1}^{n}{\binom {i+1}{2}}=2{\binom {n+2}{3}}

类似地,排列数也有对应的递推式:

\boxed{A_n^m=A_{n-1}^m+mA_{n-1}^{m-1}\tag{2 II}}

这同样是通过分讨第 n 个元素是否参与排列得到的。

求和性质

组合数的求和性质在二项式定理和概率论中有重要应用。

\boxed{\sum_{i=0}^n{n\choose i}=2^n\tag3}

这个性质的组合意义是:从 n 个元素中选取 0 个、1 个、\dotsn 个的所有方案数之和,等于所有子集的个数 2^n

下面是一个利用裂项技巧的求和恒等式:

f'(x)+p(x)f(x)=0

我们有一个固定的解题方法,但是我们先推导一番,设 P'(x)=p(x)

\dfrac{\d y}{\d x}+p(x)y=0

按照微分方程的思路,

\ln y=-P(x)+C

对内部应用性质 (1)

{2m+1\choose m}=\sum_{i=0}^m{2m-i\choose m}=\sum_{0\le i\le m}{2m-i\choose m}

通过变量替换(注意到 2m-i 的取值遍历了所有可能),令 j = 2m-i,则:

{2m+1\choose m}=\sum_{i=m}^{2m}{i\choose m}

证毕。

同样的,两边乘上 m! 就得到了排列的版本。

常见解题技巧

在本节中,我们会穿插介绍若干解题策略。目的是让你理解:模型并非全部直接套用,而是需要根据具体情境灵活选择。有时枚举反而更快,不要盲目追求精巧的解法。

解题策略

特殊优先策略:约束最多、最特殊的元素优先处理。

这里的「优先」不一定是最先处理,也可以是最后处理(例如插空法)。

  • 例 1:基本限制


    题目 六个人排队,甲不在排头。

    解法一 甲有 5 种位置选择,剩下五个人全排列后插入即可:

    5\times A(5,5)=600

    解法二(插空法) 五个人排好后,甲插入除开头以外的任一空位:

    A(5,5)\times C(5,1)=600

  • 例 2:双重限制


    题目 六个人排队,甲不在队头,丁不在队尾。

    我们先用插空法放甲:

    A(4,4)\times C(4,1)\times C(5,1)=480

    但还需要考虑一种特殊情况:甲选了队头位置,丁恰好插在甲前面(即丁在队头)。

    A(4,4)=24

    因此总答案为:

    480+24=504

  • 例 3:三重限制


    题目 六个人排队,甲不在队头,丁不在队尾,且甲和丁不相邻。

    这个例子恰好体现了我们分步处理的优势。

    我们仍然用插空法先放甲,但此时需要进一步分类讨论。

    情况一:甲选了队尾位置。

    A(4,4)\times C(4,1)=96

    情况二:甲没有选队尾位置。

    A(4,4)\times C(3,1)\times C(3,1)=216

    因此总方案数为:

    96+216=312

等效替代策略:当我们需要计算带特殊条件的方案数时,可以构造一个双射(bijection),将原问题的每一种方案映射为新问题的一种方案,使答案更容易计算。常用的等效替代方法包括捆绑法、插空法和隔板法。隔板法较为复杂,我们后面单独讲解。

捆绑法:七个人站队拍照,甲和乙要求相邻,丙和丁要求相邻,求方案数。

我们将甲和乙「捆绑」为一个整体,丙和丁也「捆绑」为一个整体,这样原来的七个人就变成了 5 个单元。

先排列这 5 个单元:

A_5^5=5\times4\times3\times2\times1=120

再将每个「捆绑体」内部进行排列,总答案为:

A_5^5\times A_2^2\times A_2^2=480

插空法:七个人拍照,甲和乙要求不相邻,求方案数。

我们先不管甲和乙,排列其余五人:

A_5^5=5\times4\times3\times2\times1=120

然后将甲和乙插入这 5 个人形成的 6 个空位中(两人不能在同一个空位),总答案为:

A_5^5\times A_2^2=240

练习:五个人的顺序已确定,现插入两人,共有几种方案?

  • 若两人相邻:捆绑后插空,C_6^1=6 种。
  • 若两人不相邻:如上所述,240 种。

由于两种情况无交集,直接相加,总答案为 246 种。

先整体后局部策略:先确定一个集合的位置,再确定集合内部的排列;或者反过来。如果先确定集合内部的排列,再确定集合整体位置,也可以视为插空法的一般形式。

例题:五个男生和五个女生拍照,要求同性别相邻的方案数。

首先,我们排列男生和女生的整体次序:

A(2,2)

然后男生内部和女生内部分别全排列,各有 A(5,5) 种方案。

因此总答案为:

A(2,2)\times A(5,5)\times A(5,5)

正难则反策略:当正面分类讨论比较复杂时,我们可以通过「总方案数减去不满足条件的方案数」来求解。

例题:班里 50 人选 5 人出游,要求正副班长和团支部书记中至少一人在内,求方案数。

正面做法需要枚举哪些人在内,分类较多。我们不妨考虑反面——即没有任何限制的方案数减去三人都不在的方案数。

无限制的方案数:

{50\choose 5}

三人都不在的方案数(从剩下 47 人中选 5 人):

{47\choose 5}

因此答案为:

{50\choose 5}-{47\choose 5}

倍缩法和可重策略

例题:七个人排队,甲、乙、丙三人顺序固定,求方案数。

也可以理解为:甲、乙、丙三人的排列顺序不重要。

我们可以用七个人全排列的方案数,除去甲、乙、丙三人排列的方案数。

直观来看,每 A(3,3) 种排列中,甲、乙、丙的相对位置相同但内部顺序不同,它们属于同一组。除去甲、乙、丙的内部排列数,就是答案:

{A(7,7)\over A(3,3)}=A(7,4)=7\times6\times5\times4=840

可重集的相关内容将在后续章节详细讨论。

多排问题直排策略

例题:六个人照相排队,分两排,每排三人,共有几种排队方式?

解法一:先选三人排列在前排,剩下三人排列在后排:

\begin{aligned} C(6,3)\times A(3,3)\times A(3,3)&={6\times5\times4\over3\times2\times1}\times6\times6\\ &=6\times5\times4\times3\times2\times1\\ &=720 \end{aligned}

解法二:注意到这等价于六个人排列后,后三人自动归入后一排:

A(6,6)=6\times5\times4\times3\times2\times1=720

总结:对于分组且每组有区别的情况,可以直接合并考虑,不需要分步。

模型和穷举策略:在组合计数中,我们常常需要灵活运用以下两种策略:

  • 模型化:将问题归纳为已有模型的组合(如隔板法、球盒模型等)。
  • 穷举:结合分类讨论,通过枚举特殊情况进行求解。

下面我们通过具体的模型来展开讲解。

排数问题

例题 用数字 0 \sim 9 可以排成多少个满足以下条件的三位数?

(一)不同的三位数

解法一 三位数范围为 100 \sim 999,共 999-100+1=900 个。

解法二 第一位(百位)不能为 0,有 9 种选择;后两位各有 10 种选择:

9\times10\times10=900

(二)没有重复数字的三位数

百位不能为 0,有 9 种选择;十位从剩余 9 个数字中选 1 个;个位从剩余 8 个数字中选 1 个:

9\times9\times8=648

(三)没有重复数字的三位奇数 / 偶数

奇数情况:个位从 1,3,5,7,9 中选 1 个,有 5 种选择;百位不能为 0 且不能与个位重复,有 8 种选择;十位有 8 种选择:

5\times8\times8=320

偶数情况:个位从 0,2,4,6,8 中选 1 个。

  • 若个位为 0:百位有 9 种选择,十位有 8 种选择,共 9\times8=72 种。
  • 若个位不为 0:个位有 4 种选择,百位有 8 种选择,十位有 8 种选择,共 4\times8\times8=256 种。

合计 72+256=328 种。

(四)加强:没有重复数字且大于 300 的三位偶数

利用正难则反的策略,用偶数总数减去不超过 300 的偶数:

  • 百位为 1 的偶数:个位从 0,2,4,6,8 中选 1 个(5 种),十位有 8 种选择,共 5\times8=40 种。
  • 百位为 2 的偶数:个位从 0,4,6,8 中选 1 个(4 种),十位有 8 种选择,共 4\times8=32 种。

因此答案为:

328-40-32=256

因数个数

例 2:求 2160 的不同正因数的个数。

:我们先将 2160 分解质因数:

\begin{aligned} 2160&=2\times5\times 216\\ &=2^4\times5\times 27\\ &=2^4\times3^3\times5 \end{aligned}

注意到每一个因数都可以写成 2^{b_1} \times 3^{b_2} \times 5^{b_3} 的形式,其中 0 \le b_1 \le 40 \le b_2 \le 30 \le b_3 \le 1

因此,因数个数为:

(4+1)(3+1)(1+1)=40

推广到一般情况:设正整数 N 的质因数分解为:

N=p_1^{c_1}p_2^{c_2}\dots p_k^{c_k}

其中 \forall p_i\in\mathbb P, p_i\neq p_j\ (i\neq j)

那么,N 的任意因数 M 都可以写成:

M=p_1^{b_1}p_2^{b_2}\dots p_k^{b_k}

其中 \forall b_i\le c_i

因此,N 的因数个数为:

\mathit{cnt}=(c_1+1)(c_2+1)\dots(c_k+1)

子集个数

例 3:对于集合:

A=\{1,2,3,\dots,10\}

求其子集的个数。

:对于集合中的每一个元素,它要么出现在子集中,要么不出现,共有 2 种选择。由于有 10 个元素,根据乘法原理,子集个数为:

2^{10}

推广:对于大小为 N 的集合,我们有:

  • 子集个数2^N
  • 真子集个数2^N-1
  • 非空子集个数2^N-1
  • 非空真子集个数2^N-2

Lucas 定理

在处理组合数取模的问题时,Lucas 定理(Lucas’ Theorem)是一个极为有力的工具。

对于素数 p,有:

{n\choose m}\equiv{n\bmod p\choose m\bmod p}\cdot{\lfloor n/p\rfloor\choose\lfloor m/p\rfloor}\pmod p

我们也可以用 p 进制表示来得到一个更直观的等价形式。设 nmp 进制下的表示为:

\begin{cases} n&=a_0+a_1p+\dots+a_kp^k\\ m&=b_0+b_1p+\dots+b_kp^k \end{cases}

那么有:

{n\choose m}=\prod_{i=0}^k{a_i\choose b_i}

这一定理在推导模意义下组合数的性质时非常有用,你可以将其视为将大问题拆解为每一位上独立的小问题。

隔板法

隔板法(又称插板法,Stars and bars)是用于求一类给相同元素分组的方案数的一种技巧,也可以用于求一类线性不定方程的解的组数。隔板法用于求将相同元素分组的方案数,也可以用于求线性不定方程的正整数解或非负整数解的组数。

正整数和的数目

求方程:

x_1+x_2+\dots+x_k=n

的正整数解的组数。

等价情景:把 n 个小球分成 k 组(组之间有序),每组至少一个,求方案数。

我们在 n 个元素之间形成的 n-1 个空隙中插入 k-1 块隔板,将元素分为 k 组。因此答案为:

\boxed{{n-1\choose k-1}}

非负整数和的数目

情况二:非负整数解

求方程:

x_1+x_2+\dots+x_k=n

的非负整数解的组数。

等价情景:把 n 个小球分成 k 组(组之间有序),每组可以为空,求方案数。

y_i=x_i+1,则原方程变为:

y_1+y_2+\dots+y_k=n+k

此时每个 y_i 都是正整数,转化为情况一,答案为:

\boxed{{n+k-1\choose k-1}}

直观理解 我们先「借给」每组一个元素,将非负整数问题转化为正整数问题,最后再将借出的元素收回。

不同下界整数和的数目

问题三:如果再扩展一步,要求对于第 i 组,至少要分到 a_i,\sum a_i \le n 个元素呢?

本质是求 x_1+x_2+\cdots+x_k=n 的解的数目,其中 x_i \ge a_i

类比无限制的情况,我们借 \sum a_i 个元素过来,保证第 i 组至少能分到 a_i 个。也就是令

x_i^{\prime}=x_i-a_i

得到新方程:

\begin{aligned} (x_1^{\prime}+a_1)+(x_2^{\prime}+a_2)+\cdots+(x_k^{\prime}+a_k)&=n\\ x_1^{\prime}+x_2^{\prime}+\cdots+x_k^{\prime}&=n-a_1-a_2-\cdots-a_k\\ x_1^{\prime}+x_2^{\prime}+\cdots+x_k^{\prime}&=n-\sum a_i \end{aligned}

其中

x_i^{\prime}\ge 0

然后问题三就转化成了问题二,直接用插板法公式得到答案为

\binom{n - \sum a_i + k - 1}{n - \sum a_i}

不相邻的排列

1 \sim nn 个自然数中选 k 个,这 k 个数中任何两个数都不相邻的组合有 \dbinom {n-k+1}{k} 种。

不等式约束

求不等式:

x_1+x_2+\dots+x_k\le n

的非负整数解的组数。

引入松弛变量 x_{k+1}\ge0,原不等式等价于方程:

x_1+x_2+\dots+x_k+x_{k+1}=n

这是一个含 k+1 个变量的非负整数方程,答案为:

{n+k\choose k}

与容斥定理结合

隔板法配合容斥原理:隔板法与容斥原理的结合是经典套路。将 24 个小球分给 3 个盒子,要求每个盒子至少一个且三个盒子中的球数互不相同,求方案数。

设三个盒子分别得到 a,b,c 个球,则:

a+b+c=24

其中 a,b,c\ge1。我们先不考虑互不相同的限制,再用容斥原理排除有相同值的情况。答案为:

[]-[a=b]-[a=c]-[b=c]+2\times[a=b=c]

其中 [] 表示不限制互异时的方案数。

先计算不限制互异的方案数:

[]={23\choose 2}=253

接下来计算 [x_i=x_j]。当 a=b 时,令 a=b=t,则:

2t+c=24

由于 tc 均为正整数,因此:

t\in\{1,2,\dots,11\}

11 种情况。由对称性:

[a=b]=[b=c]=[a=c]=11

[a=b=c]:若三个值都相等,则 3a=24,即 a=8,恰好有 1 组解。

因此最终答案为:

253-33+2=222

其中 f'(x_0)f(x_0) 均含有参数 a

有两种方式处理上面不等式组:

  1. 若①中的参数 ax_0 容易分离

    • 首先在①中用零点 x_0 表示参数 a
    • 然后代入②来确定零点 x_0 的取值范围。
    • 最后利用获得的零点 x_0 的范围和①确定参数 a 的取值范围。
    • 既适合已知恒成立求参数范围的问题,也适用于不等式的证明。
  2. 若①不容易分离参数 ax_0,或分离后结构复杂

    • 首先猜测方程组 \begin{cases} f'(x_0) = 0 \\ f(x_0) = 0 \end{cases} 的解 x_0
    • 然后由 f(x_0) \ge 0 和端点效应解出 a 的取值范围(该范围为最终的答案)。
    • 最后证明在该范围下 f(x) \ge 0 恒成立。
    • 注意这个只适合已知恒成立求参数范围的问题,不适于不等式的证明。

通常来说,我们设 x_0 为函数的零点,列出 f(x_0)=0 和要求的条件,组成方程组解方程即可。

如果函数的导数非常复杂,则考虑变换主元法:

  1. 首先由端点效应初步获得参数的取值范围,验证这个范围是否为最终范围;若不是,则判断函数的极值并获取参数的取值范围;

  2. 根据主元函数的形式,判断主元函数的单调性,然后求主元函数的最值(此最值应当是一个函数),最后判断该最值函数是否满足题中的不等式。