组合数学

懒得复制的一些东西

1.1 可重复组合

(n)个数中选择(r)个数,每个数可以重复选择多次。

方案数为(inom{n + r - 1}{r})

考虑若没有选择多次的条件,就是在(n)个数中选择一个子数列,满足(a_i < a_{i + 1}),现在有了可以重复选择的条件,也就是说我们选择的子数列变成了(a_i <= a_{i + 1}),那么我们考虑如何将其变成(a_i < a_{i + 1})的形式,只需将这个子数列从小到大排序,使(a_i + i - 1)即可。

那么此时的方案数是(inom{n + r - 1}{r}),感性理解一下就是从(n + r - 1)个数中选择(r)个数,那么按照(a_i + i - 1)的规则减回去,发现最大的数最大是(n),最小的数是(1),正好满足原来的条件。

接着考虑一个问题,如果依旧是是从(n)个数中选择(r)个数,不能选择相邻的数,每一个数只能选择一次的方案数。

那么此时选择的子数列就是(a_i + 1 < a_{i + 1})的形式,我们考虑将它变成(a_i < a_{i + 1})的形式,只需移项即可,得到(a_i < a_{i + 1} - 1)。那么现在数列中最大的数也就是(n - r + 1)了,方案数也就是(inom{n - r + 1}{r})

原文地址:https://www.cnblogs.com/Tian-Xing-Sakura/p/13097934.html