斯特林数

原来这玩意这么他妈的简单

第二类-斯特林子集数

n个数,分进m个集合时的方案数
$$
f[i][j]=f[i-1][j-1]+f[i-1][j]\cdot j
$$

第一类-斯特林轮换数

1~n的排列,形成m个环的方案数
$$
f[i][j]=f[i-1][j-1]+f[i-1][j]\cdot (i-1)
$$

划分数

https://www.luogu.com.cn/problem/P6189

给定一个数n,求它的划分方案数。1+4和4+1算同一种

比如

$$
5=1+1+1+1+1\
=1+1+1+2\
=1+1+3\
=1+2+2\
=1+4\
=2+3\
=5
$$
巧妙的dp想法:
$$
f[i][j]表示i拆成j个数的方案数\
f[i][j]=f[i-1][j-1]+f[i-j][j]\
第一种情况是存在1时的,第二种情况是不存在1的,那么方案数与把所有数-1时的情况相同
$$
另:套用完全背包想法

上面两种方法复杂度$O(n^2)$

优化解法:

把完全背包方法的第二维分成$\le \sqrt n$和大于的。小于的直接用完全背包的方法做。(最小的数<=根号n)

大于的情况按照上面第一种思路做
$$
f[i][j]=f[i-(T+1)][j-1]+f[i-j][j]\
第一种是==T,第二种是>T
$$