主题目录

受限排列:捆绑、插空与补集

基础更新于 2026-09-29

本页目录

排列限制可以作用于相邻关系、相对次序或禁止位置。先描述合法结果如何构造,才能判断是否重复计数。

捆绑与插空

要求指定对象相邻时,先将它们视为一块,排列块与其余对象,再乘块内部合法次序数。要求若干对象互不相邻时,可先排其他对象,再选空隙插入;每个空隙是否可放多个对象要按限制判断。

例:三个女生不相邻

四名男生、三名女生均不同,排成一列且女生两两不相邻。先排男生有 4!4! 种,形成两端及中间共 55 个空隙;选 33 个空隙并安排女生有 (53)3!\binom53 3! 种,因此共有 4!(53)3!=14404!\binom53 3!=1440 种。

例:至少一对相邻

五个不同对象中指定 A,BA,B 相邻的排列为 2⋅4!2\cdot4!。若要求 A,BA,B 不相邻,可用补集得 5!−2⋅4!=725!-2\cdot4!=72。但“至少两对指定对象相邻”往往存在重叠,简单相加需要容斥修正。

易错点

捆绑后的内部排列必须满足原条件。插空法若被插对象有重复,不能照乘其阶乘。对于固定相对顺序的 kk 个不同对象,所有排列中只占 1/k!1/k!,前提是其他限制对这 k!k! 种顺序对称。

间距约束的压缩换元

从 1,…,N1,\ldots,N 中选 k≥1k\ge1 个整数 a1<⋯<aka_1<\cdots<a_k,要求相邻所选数的差至少为整数 d≥1d\ge1。令

bi=ai−(i−1)(d−1).b_i=a_i-(i-1)(d-1).

原条件等价于 1≤b1<⋯<bk≤N−(k−1)(d−1)1\le b_1<\cdots<b_k\le N-(k-1)(d-1);逆变换 ai=bi+(i−1)(d−1)a_i=b_i+(i-1)(d-1) 恢复原选择。所以方法数为

(N−(k−1)(d−1)k),\binom{N-(k-1)(d-1)}k,

前提是上标至少为 kk,否则无解,计数为 00。k=0k=0 时空选择另计为 11。

例如从 1,…,201,\ldots,20 中选 55 个两两差至少为 33 的数,共有 (125)=792\binom{12}5=792 种。这里排序只是给每个子集一个唯一表示,最终不用再乘 5!5!。

恰有一个孤立元素:改数连续段

对子集 A⊆{1,2,…,n}A\subseteq\{1,2,\ldots,n\},用长度 nn 的 0,10,1 串表示选取情况。元素 kk 孤立表示它被选中、相邻整数均未选中;端点只检查存在的那个邻居。因此孤立元素恰对应长度为 11 的连续 11 段。

例如 n=6n=6,要恰有一个孤立元素:

(1) 只有一段 11 时,该段长度必须为 11,有 66 种。

(2) 恰有两段时,一段长 11,另一段长 k−1≥2k-1\ge2,其中 kk 为选中的总数,所以 k=3,4,5k=3,4,5。先选哪一段是单点段,有 22 种。两段之间至少一个零,把这一零放好后,其余 5−k5-k 个零分配到前、中、后三处,有 (7−k2)\binom{7-k}{2} 种。因此此类有

2[(42)+(32)+(22)]=202\left[\binom42+\binom32+\binom22\right]=20

种。

(3) 三段或更多时,只有一段可长 11,另外两段至少各长 22,加段间至少两个零,长度至少 1+2+2+2=71+2+2+2=7,不能放入长度 66 的串。

故共 6+20=266+20=26 种。关键是数“长度为1的连续段”,不是只规定某点的两个邻居不选;后一做法还须排除别处出现第二个孤立点。

不允许同时选取的数:链与配对

倍数链。 从 1,…,N1,\ldots,N 选数,要求不能同时选 xx 和 qxqx,其中整数 q≥2q\ge2。将每个数反复除以 qq,唯一归入一条 b,bq,bq2,…b,bq,bq^2,\ldots 的链,其中 bb 不被 qq 整除。各链互不相交,限制只发生在相邻项之间。

长度 LL 的一条链,按相邻两项配对,至多选 ⌈L/2⌉\lceil L/2\rceil 项;选第1、3、5…项可达。所以所有链分别选奇数位置就是全局最优。原题 N=1995,q=15N=1995,q=15,至多有三层:第1层有 1995−133=18621995-133=1862 项,第3层有 88 项,最优为 18701870 项。也可写成 1995−⌊1995/15⌋+⌊1995/225⌋1995-\lfloor1995/15\rfloor+\lfloor1995/225\rfloor。

按最大元素配对。 若 B⊆{1,…,2n+1}B\subseteq\{1,\ldots,2n+1\} 不允许三个互异元素满足 x+y=zx+y=z,取其最大元素 mm。对 1≤x<m1\le x<m,把 xx 与 m−xm-x 配对,每对不同元素最多选一个;若 mm 偶数,单独的 m/2m/2 允许选,因为不能将它重复当成两个不同元素。

m=2r+1m=2r+1 时,除 mm 外有 rr 对,故 ∣B∣≤r+1|B|\le r+1;m=2rm=2r 时有 r−1r-1 对及单个 rr,加 mm 得 ∣B∣≤r+1|B|\le r+1。两种均不超过 n+1n+1。取 {n+1,…,2n+1}\{n+1,\ldots,2n+1\} 可达,因两不同元素之和至少 2n+32n+3。注意这里的“互异”正是中点可以保留的理由。

按余数分组处理成对禁选

从 {1,…,50}\{1,\ldots,50\} 选子集,要求任意两个不同元素之和不被 77 整除。把数按除以 77 的余数分为七组。

余数为 00 的组最多选一个,因为两不同数之和仍被 77 整除。余数对 (1,6),(2,5),(3,4)(1,6),(2,5),(3,4) 中,两组不能同时有选中的元素,否则任取一对就违例;每对最多保留较大的一组。同一非零余数组中的两数之和余数为 2r2r,不为 00,所以可以整组选取。

11 至 5050 中,余数为 11 的有八个,其余每组七个。因此最多 1+8+7+7=231+8+7+7=23 个。选余数 1,2,31,2,3 的全部数,再选一个 77 的倍数,能达到此上界。

一般模数时先找哪些余数对相加为零;若模数为偶数,中间余数 m/2m/2 也像零余数一样最多选一个,不能照抄奇模数的分组结果。

关联阅读

先修:排列、组合与圆排列 · 容斥、递推计数与错排。

同主题:二项式定理与组合恒等式 · 分组、分配与隔板法。

返回主题目录 · 全站目录 · 符号约定