给定 $n$ 个数,要求将 $n$ 个数进行排列,使得所有数值相同的点对的距离的最小值尽量大。
答案为 $\lfloor \cfrac {n-\text{cnt}}{\text{maxfreq}}\rfloor$,其中 $\text{maxfreq}$ 为相同数值的数出现的最大频率,$\text{cnt}$ 为出现频率为 $\text{maxfreq}$ 的数值的个数。
假设出现频率为 $\text{maxfreq}$ 的数为 $a,b,c$。
考虑这样放置:$a,b,c,\ldots.a,b,c,\ldots.a,b,c,\ldots a,b,c$
接下来对剩余的数按出现频率排序后,按数字标注顺序依次放置即可: $a,b,c,1,4,7,10,a,b,c,2,5,8,11,a,b,c,3,6,9,a,b,c$
给定一棵无根树,任选一个结点添加一个新结点能得到的所有不同构的树的个数等于以原树的每个结点为根的不同构的有根树个数。
将 $n$ 个球放入 $m$ 个盒子中,允许有空盒,球和盒子都没有区别,问方法数。
该问题等价于:
考虑将上述操作分解为若干次操作,第 $i$ 次操作选择 $a_1\sim a_i$ 并都加上 $j$,则第 $i$ 次操作对应的生成函数为
$$\sum_{j=0}^{\infty} x^{ij}=\frac 1{1-x^i}$$
于是总方法数为
$$[x^n]\prod_{i=1}^m \frac 1{1-x^i}$$
但发现上式难以计算,考虑 $\text{dp}$ 计算答案。设 $\text{dp}(i,j)$ 表示将 $i$ 个球放入 $j$ 个盒子中的方法数。
假如至少有一个盒子是空的,则删去一个盒子也不影响方法数,于是 $\text{dp}(i,j)\gets \text{dp}(i,j-1)$。
如果所有盒子至少有一个球,则可以与每个盒子去掉一个球的方案构成一一映射,于是 $\text{dp}(i,j)\gets \text{dp}(i-j,j)$。
于是可以 $O(nm)$ 得到答案。