第一类Stirling数是有正负的,其绝对值是包含n个元素的集合分作k个环排列的方法数目。
递推公式为, S(n,0) = 0, S(1,1) = 1.   S(n+1,k) = S(n,k-1) + nS(n,k)。 
边界条件: S(0 , 0) = 1 S(p , 0) = 0 p>=1 S(p , p) =1 p>=0 
一些性质: S(p ,1) = 1 p>=1 S(p, 2) = 2^(p-1)– 1 p>=2   

第二类Stirling数是把包含n个元素的集合划分为正好k个非空子集的方法的数目。   
递推公式为:   S(n,k)=0; (n<k||k=0)   S(n,n) = S(n,1) = 1,   
S(n,k) = S(n-1,k-1) + kS(n-1,k).
考虑第p个物品,p可以单独构成一个非空集合,此时前p-1个物品构成k-1个非空的
不可辨别的集合,方法数为S(p-1,k-1);
也可以前p-1种物品构成k个非空的不可辨别的集合,
第p个物品放入任意一个中,这样有k*S(p-1,k)种方法。

sdut 2883

n场比赛,m张牌(n>=m)每场比赛用一张牌,

每张牌至少用一次,问有几种方案数。

分析:n场比赛划分成m个集合,每个集合里的比赛只用同一张牌,

没有空的集合。也就是说把包含n个元素的集合划分为正好m个非空子集的方法的数目,

再乘m的全排列。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<cmath>
#include<string>
#include<algorithm>
#include<set>
#include<map>
#include<cstring>
#include<queue>
#include<stack>
#include<list>using namespace std;
typedef long long ll;
const ll mod=1e9+7;ll sum[110][110];
ll jiec[102];int main(){jiec[0]=1;jiec[1]=1;jiec[2]=2;for(ll i=3;i<102;i++){jiec[i]=(jiec[i-1]*i)%mod;}for(ll i=0;i<=102;i++){for(ll j=0;j<=102;j++){if( j==0 || j>i )sum[i][j]=0;else if( i==j || j==1 )sum[i][j]=1;else sum[i][j]=( sum[i-1][j-1] + j*sum[i-1][j] )%mod;}}int n,m;while( scanf("%d %d",&n,&m)!=EOF ){printf("%lld\n",(jiec[m]*sum[n][m] )%mod );}return 0;
}

sdut 3144

现在给你一个数集S的大小n,请输出将它划分为集合的方法总数ans是多少?

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<cmath>
#include<string>
#include<algorithm>
#include<set>
#include<map>
#include<cstring>
#include<queue>
#include<stack>
#include<list>using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const int maxn=5002;ll sum[2][maxn];
ll ans[maxn];void  cal(){for(ll i=0;i<maxn;i++){ans[i]=0;for(ll j=0;j<maxn;j++){if( j==0 || j>i )sum[i%2][j]=0;else if( i==j || j==1 )sum[i%2][j]=1;else sum[i%2][j]=( sum[ (i-1)%2 ][j-1] + j*sum[ (i-1)%2 ][j] )%mod;ans[i]=(ans[i]+sum[i%2][j])%mod;}}
}int main(){cal();int n;int cas=1;while( scanf("%d",&n)!=EOF ){printf("Case #%d: %lld\n",cas++,ans[n]%mod );}return 0;
}

第一类第二类斯特林数总结相关推荐

  1. [学习笔记]第一类/第二类斯特林数

    前置知识 · 组合数学基础 · 容斥原理 · 生成函数 · FFT/NTT · 多项式exp,多项式ln,多项式快速幂,多项式平移 一些规定 · 下降幂 xn‾=∏i=1n(x−i+1)x^{\und ...

  2. 【组合数学】第一类,第二类斯特林数(Stirling),Bell数

    第一类斯特林数 定理: 第一类斯特林数S1(p,k)计数的是把p个对象排成k个非空循环排列的方法数. 证明:把上述定理叙述中的循环排列叫做圆圈 递推公式: S1(p,p)=1(p>=0),有p个 ...

  3. 第一类斯特林数 / 第二类斯特林数 / 贝尔数 小结

    第一类斯特林数 有 nnn 个不同的小球,将它们串成 mmm 条项链,有多少种不同的方案? 第一类斯特林数的表示方法为 [nm]\left[\begin{matrix}n\\m\end{matrix} ...

  4. 第一类和第二类斯特林数

    第一类斯特林数 第一类斯特林数定义如下: \(s_1(n,k)\)表示\(n\)个元素组成\(k\)个圆排列的方案数. 其中\(n\)个元素的圆排列定义为\(n\)个元素围成一圈的排列,两个圆排列本质 ...

  5. 组合基础2 第一类斯特林数 第二类斯特林数 基础部分

    记xn‾=x(x+1)(x+2)⋯(x+n−1)x^{\overline{n}}=x(x+1)(x+2)\cdots(x+n-1)xn=x(x+1)(x+2)⋯(x+n−1),xn‾=x(x−1)(x ...

  6. 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘

    题目链接:http://acm.xju.edu.cn/JudgeOnline/problem.php?id=1006 第二类斯特林数: 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的 ...

  7. 第二类Stirling数(第二类斯特林数)

    第二类Stirling数(第二类斯特林数) 定义 第二类Stirling数表示把nnn个不同的数划分为mmm个集合的方案数,要求不能为空集,写作S(n,m)S(n,m)S(n,m). 和第一类Stir ...

  8. 【组合数学】第二类斯特林数

    一.定义 第二类Stirling数即:,又可记为[与第一类的表示有大小写的区别].其表示将n个不同的元素分成m个集合的方案数. 二.理解关键词句 1.集合的一个拆分(表示将n个不同的元素拆分成m个集合 ...

  9. BZOJ 2159 「国家集训队」Crash 的文明世界(第二类斯特林数,换根DP)【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2159 是 hydro 的 BZOJ ...

最新文章

  1. Spring中集成ActiveRecordPlugin数据操作插件
  2. Mybatis学习错误之:重复加载mapper.xml
  3. php设计模式之单例模式
  4. javascript中常用数组函数
  5. 用python随机画多个圆_Python Pygame随机绘制不重叠的圆圈
  6. ArrayList、LinkedList、Vector的区别
  7. Arrays 的copyOf() - JDK 6 和操作符 instanceof
  8. linux之如何快速查看文件的大小
  9. 少儿编程150讲轻松学Scratch(十一)-用Scratch算法给矩形工具填充颜色
  10. 字节跳动2019春招笔试——找零(JavaScript)
  11. sql stuff 函数_SQL STUFF函数概述
  12. 转:Python正则表达式操作指南
  13. git学习笔记-(10-分支例子)
  14. 史上最详细Git使用教程
  15. 瑞利信道的多普勒谱的原理与MATLAB仿真
  16. ensp下载与安装问题
  17. DASCTF Sept X 浙江工业大学秋季挑战赛wp
  18. WIPE与Format的种种神马情况
  19. 深层听觉(用无意识状态的大脑学习)秘诀
  20. 6.OSI七层模型及交换机工作原理及VLAN(虚拟局域网)及VTP(vlan同步技术)

热门文章

  1. Word 如何更新全文或某一段的field(域),如何更新参考文献或自动编号
  2. 企业微信聊天工具栏怎么开启?如何调整位置?
  3. 计网 | PGP协议实验(邮件加密解密)
  4. 【MySQL】MySQL中的表锁
  5. c语言 数字翻译成英文,100数字翻译成英语?
  6. 单模光电转换器怎么接_单纤光纤收发器a与b怎么放?如何使用光纤收发器的AB端?...
  7. python实时显示图片_任何显示来自Cam的实时图像的快速Python GUI
  8. mysql的时区设置
  9. ntp服务器授时原理,NTP原理简介
  10. 深入理解布局约束 | 开发者说·DTalk