sdnu 1011 盒子与球
来源:互联网 发布:fm发射器软件下载 编辑:程序博客网 时间:2024/05/22 03:11
盒子与球
(斯特灵数):
在组合数学,Stirling数可指两类数,都是由18世纪数学家James Stirling提出的。
Stirling数有两种,第一类和第二类Stirling数,它们自18世纪以来一直吸引许多数学家的兴趣,如欧拉、柯西、西尔沃斯特和凯莱等。后来哥本哈根(Copenhagen)大学的尼尔森(Niels Nielsen,1865-1931)提出了"Stirlingschen Zahlen erster Art" [第一类Stirling数]和"Stirlingschen Zahlen zweiter Art" [第二类Stirling数],首次把这两类数冠以「Stirling数」之名 。因为苏格兰数学家斯特林(J. Stirling, 1692-1770)首次发现这些数并说明了它们的重要性。
斯特林在解决降阶乘积x(n)=x (x–1)( x–2)…(x–n+1)问题时发现了这些数,他在一篇文章 中列出了下面的式子:
x2 = x(x-1) + x
x3 = x(x-1)(x-2) +3x(x-1) + x
x4 = x(x-1)(x-2)(x-3) + 6x(x-1)(x-2) + 7x(x-1) + x
… … … …
上式中各多项式的系数即是第二类Stirling数,它可以用一个三角数阵的形式表示(表4.2)。第二类Stirling数在组合分析与有限差分中有重要的应用。
第二类Stirling数与幂和问题有着密切的联系,其另一种形式出现在关于幂和问题的研究中。这是因为如果把(ex-1)n展开为x的幂级数形式,第二类Stirling数将作为x幂的系数的因子出现。Philadephia的《级数运算导引》(Introduction to Operation with Series,1924)中给出了该数在幂和问题中出现的例子 (该书的第88页)。
中国传统数学中的垛积招差术是研究一些计数函数的有效方法。李善兰《垛积比类》卷一、二中的「三角垛有积求高开方廉隅表」和「乘方垛各廉表」列出了两组系数(如表4.3)。李善兰的「造表法」相当于给出了第一类Stirling数和Euler数递归定义。
第一类Stirling数是有正负的,其绝对值是包含n个元素的集合分作k个环排列的方法数目。
递推公式为,
S(n,0) = 0, S(1,1) = 1.
S(n+1,k) = S(n,k-1) + nS(n,k)。
第二类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).
将n个有区别的球的球放入k个无标号的盒子中( n>=k>=1,且盒子不允许为空)的方案数就是stirling数.(即含 n 个元素的集合划分为 k 个集合的情况数)
递推公式:
S(n,0) = 0
S(n,1) = 1 (k = 1)
S(n,n) = 1
S(n,k) = 0 (k > n)
S(n,k) = S(n-1,k-1)+k*S(n-1,k) (n >= k >= 2)
分析:设有n个不同的球,分别用b1,b2,...,bn表示。从中取出一个球bn,bn的放法有以下两种:
1.bn独占一个盒子,那么剩下的球只能放在k-1个盒子里,方案数为S(n-1,k-1);
2.bn与别的球共占一个盒子,那么可以将b1,b2,...,bn-1这n-1个球放入k个盒子里,然后将bn放入其中一个盒子中,方案数为k*S(n-1,k).
#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<algorithm>using namespace std;long long fun(long long n,long long m){ if (m<=0||n<m) return 0; if (n==m) return 1; else return fun(n-1,m-1)+fun(n-1,m)*m;}long long jc(long long n){ if (n==1) return 1; else return n*jc(n-1);}int main(){ long long n,m; cin>>n>>m; cout<<fun(n,m)*jc(m)<<endl; return 0;}
- sdnu 1011 盒子与球
- acmicpc.sdnu.edu.cn 1011盒子与球
- SDNU 1011.盒子与球 第二类stirling数(组合数)
- sdnuoj1011 盒子与球
- 盒子与球
- vijosP1210 盒子与球
- sdnuACM1011盒子与球
- SDNUoj1011盒子与球
- Cpp环境【Vijos1060】斯特林数:盒子与球
- 盒子与球问题的探讨
- 球与盒子模型全解
- SDNU 1011(第二类stirling数)
- 盒子模型与定位
- css浮动与盒子
- SDNU1011 盒子与球【第二类Stirling数模板】
- 关于第二类srting函数 sdun1011盒子与球
- 电视与盒子那些事儿
- YT14-HDU-盒子与瓷砖
- trace工具,c++/c#/python
- java实际项目中interface和abstract interface 区别
- Bootstrap(四十七)
- anaconda 下修改HOME的默认目录
- 1.3 每个对象都提供服务
- sdnu 1011 盒子与球
- Bootstrap(四十八)
- Tensorflow 实践RNN(一)
- Bootstrap(四十九)
- Bootstrap(五十)
- leetCode-My Calendar II
- 贝叶斯(02) 理解贝叶斯
- 算法学习——决策树(1)
- python学习四--元组