第二类斯特林数知识点参考来自:博客1 不过他写的第一类斯特林数写的有点模糊
第一类斯特灵数参考来自:博客2
划分dp知识点参考来自:博客3
这第二类斯特林数和划分dp的数的划分两个知识点很相似啊
区别就是
第二类斯特林数:n个不同的小球
划分dp:n个相同的小球
先看第二类斯特灵数的题型:
下图漏了一个条件:每组不能为空
再来看看划分dp的一道简单题
解法:
解析:这一题实际上是组合数学里面的经典问题,跟第二类Stirling数有些相似。可以把一个数值为n的数看成n个小球,划分的份数k看作是k个盒子,那么本题的要求就是:
将n个小球放到k个盒子中,小球之间与盒子之间没有区别,并且最后的结果不允许空盒
与第二类Stirling数的递推公式的推导过程相似:
将n个小球放到k个盒子中的情况总数=1、至少有一个盒子只有一个小球的情况数+2、没有一个盒子只有一个小球的情况数
这样进行划分的原因是这种分类足够特殊,1和2都有可以写出来的表达式:
1. 因为盒子不加区分,那么1的情况数与“将n-1个小球放到k-1个盒子中”的情况数一样
2. 没有一个盒子只有一个小球,那么把每个盒子中拿出来一个小球,对应的是“把(n-k)个小球放到k个盒子中的情况数”
至于1和2中的两种等价关系为什么成立,可以用集合A=集合B的方式去证明
最后将上面的叙述转化为dp的表达形式:
f[n][k]代表将n个小球放到k个盒子中且没有空盒的情况,那么f[n][k] = f[n-1][k-1] + f[n-k][k]n*k 时间复杂递推一下即可
例如n=3 k=2
划分dp 答案是1 第二类斯特林数答案是3:
划分dp:
[0,0] [0]
第二类斯特林数:
[1,2][3]
[1,3] [2]
[2,3][1]
第二类斯特灵数 and 划分dp 顺带 第一类斯特林数 学习博客
原创
©著作权归作者所有:来自51CTO博客作者ccsu_deer的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【Canvas与艺术】三环莫比乌斯圈
在Canvas里用四段嵌合的圆弧绘制三环莫比乌斯圈。
canvas 莫比乌斯 -
HDU4372(第一类斯特林数)
题目:Count the Buildings题意:N座高楼,高
#include ios i++ -
hdu3625(第一类斯特林数)
与第二类有些区别!#include #include #include #include #include #include #include #include #include using namespace std;#define INF 0x3ffffffftypedef long long int LL;#define N 22LL dp[N][N];LL sum[N];int main(){ //freopen("//home//chen//Desktop//ACM//in.text","r",stdin); //freopen("/
#include i++ desktop #define ios -
【洛谷5395】第二类斯特林数·行
给定$n$,对于所有$i=0\sim n$,求出$S_2(n,i)$。
斯特林数 FFT/NTT #define 生成函数 组合数 -
linux 开机启动docker试着
Dcoker基本概念Docker 包括三个基本概念:镜像(Image):Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象
linux 开机启动docker试着 命令 指定启动类 docker Docker Dockerfile