第二类斯特灵数

2024-01-26 12:08
文章标签 第二类 斯特灵

本文主要是介绍第二类斯特灵数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

hdu 2643
最近在Teddy的家乡举办了一场名为“Cow Year Blow Cow”的比赛.N竞争对手参加了比赛。比赛非常紧张,排名正在发生变化。
现在的问题是:
竞争者可以在竞争中排名多少种不同的方式,从而允许联系的可能性。
因为答案非常大,你可以输出答案MOD 20090126.
以下是N = 2时的方法:
P1 <P2
P2 <P1
P1 = P2

输入
第一行将包含一个T,然后是T个案例。
每种情况只包含一个整数N(N <= 100),表示人数。

产量
一个整数pey线代表答案MOD 20090126。

样本输入
2
2
3

样本输出
3
13

把一个包含n个元素的集合分成k个非空子集的方法数:
初始值:
S2(n,0)=0,S2(n,k)=0(n<k)S2(n,0)=0,S2(n,k)=0(n<k)
S2(n,1)=S2(n,n)=1S2(n,1)=S2(n,n)=1
递推式:
S2(n,k)=S2(n−1,k−1)+S2(n−1,k)∗kS2(n,k)=S2(n−1,k−1)+S2(n−1,k)∗k
考虑第n个元素,如果它自成一个集合,那么前n-1个元素构成k-1个集合,就是S(n,k),如果它不是自成集合,那么前面n-1个元素构成k个集合,再把第n个元素加到任意一个集合中,共k种方案。
题目大意:
n位选手参加比赛,每个选手有一个排名,有可能有并列,那么排名情况有多少种可能?
n位选手可以放到1个集合,两个集合。。。。n个集合,因为每个集合对应的是名次,所以集合是区分的。
那么对于n个选手,可以选择的方案数:
在这里插入图片描述

#include <bits/stdc++.h>using namespace std;
const int mod = 20090126;
const int MAXN = 100+5;
int n;
int s2[MAXN][MAXN];
int fac[MAXN];
void get_s2()
{fac[0] = 1;for(int i = 1; i <= 100; ++i)fac[i] = (long long)fac[i-1]*i%mod;for(int i = 1; i <= 100; ++i){s2[i][1] = s2[i][i] = 1;for(int j = 2; j < i; ++j){s2[i][j] = (s2[i-1][j-1] + (long long)j*s2[i-1][j]%mod)%mod;}}
}int main()
{get_s2();int t;scanf("%d",&t);while(t--){scanf("%d",&n);int ans = 0;for(int i = 1; i <= n; ++i)ans = (ans+(long long)fac[i]*s2[n][i]%mod)%mod;printf("%d\n",ans);}return 0;
}

这篇关于第二类斯特灵数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646756

相关文章

Light OJ 1236 Race 第二类斯特林数

第二类斯特林数 n 匹马 分成1 2 3... n组 每一组就是相同排名 没有先后 然后组与组之间是有顺序的 在乘以组数的阶乘 #include <cstdio>#include <cstring>using namespace std;int dp[1010][1010];int a[1010];int main(){a[0] = 1;dp[0][0] = 1;for(int

组合数学几类特殊的数,斯特林第一类数,斯特林第二类数,贝尔数

贝尔数 定义: Bn是基数为n的集合的划分方法的数目。集合S的一个划分是定义为S的两两不相交的非空子集的族,它们的并是S。例如B3 = 5因为3个元素的集合{a, b, c}有5种不同的划分方法: {{a}, {b}, {c}}, {{a}, {b, c}}, {{b}, {a, c}}, {{c}, {a, b}}, {{a, b, c}}。 B0是1,因为空集正好有1种划分方法

UVA 10844 - Bloques (第二类斯特灵数)

UVA 10844 - Bloques 题目链接 题意:给定n个数字,问这n个数字能分成子集分成有几种分法 思路:一开始先想了个状态,dp[i][j]表示放i个数字,分成j个集合的方案,那么转移为,从dp[i - 1][j - 1]在多一个集合,和从dp[i - 1][j]有j个位置放,那么转移方程为dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j] *

自然数幂和 拉格朗日插值法和第二类斯特林数法

写在这里,目的是在以后需要看的时候不用再去网上抄(划掉) 求 s ( n ) = ∑ i = 1 n i k 求s(n)=\sum_{i=1}^n i^k 求s(n)=i=1∑n​ik 拉格朗日插值法 给定若干个点值,(x0,y0),(x1,y1),(xn,yn),它们的差值多项式 L ( x ) = ∑ i = 0 n y i ∗ ∏ j ≠ i x − x j x i − x j L(

Vision_MATH_球盒问题+第二类Stirling数

///定义: /*     排列组合解决球盒的八大问题,其中用到排列组合公式和第二类斯特林公式 */ ///代码: /***name:第二类斯特林数(第二类Stirling数)**function:解决求不同盒同等问题**公式: S(r, c) = S(r-1,c-1) + c * S(r-1, c)*/#include <iostream>#inclu

第二类——数学题

有时很容易栽在一些边界条件。考虑全面的习惯要在平时的训练中多加注意。 2008年 又一版A+B(http://acm.hdu.edu.cn/showproblem.php?pid=1877)#include<stdio.h>#include<string.h>int a,b;int x[100],y[100]; //原来是32,放上去就报错?int xi,yi; //the

格林公式(二维中第二类曲面与第二类曲线曲线互相转换)

第二类曲面与第二类曲线曲线互相转换 设闭区域D由光滑曲线L围成,若P(x,y),Q(x,y)在D上有一阶连续偏导数,则有 其中,L是D的取正向的边界曲线(即沿直线方向前进,左边是D,右边不属于D

贝尔数,两类斯特灵数的计算公式

第一类斯特灵数:含正负值,其绝对值是包含n个元素的集合分作k个环排列的方法数目。 递推公式   s(n,0)=0,s(1,1)=1,s(n,k)=s(n-1,k-1)+(n-1)*s(n-1,k) 第二类斯特灵数:把包含n个元素的集合划分为正好k个非空子集的方法的数目。 递推公式   s(n,k)=s(n

中国社会科学院大学-英国斯特灵大学中外合作办学创新与领导力博士DMAN项目

中国社会科学院大学-英国斯特灵大学中外合作办学创新与领导力博士DMAN项目 中国社会科学院大学-英国斯特灵大学创新与领导力博士DMAN项目是中国社会科学院大学第一个博士层次的中外合作办学项目,于2020年3月正式获得教育部批准办学,批准书编号:OE11UK1N20192019N。创新与领导力博士项目是结合理论框架及其在现实生活中的实际应用的专业博士项目,依托中国社科院及斯特灵大学丰富的学术资源,

hdu2512 第二类斯特林数

题意: 给出n个卡,求这些卡放在一个包里面的方法数  +  放在两个包的方法数  +  放在三个包的方法数  。。。。放在n个包的方法数  的总和 题解: 模板题 第二类斯特拉数 将p个物体排成k个非空集合排列的方法数。s(p,0)=0 ,p>=1 ;s(p,p)=1  ,p>=0。 递推式:s(p,k)=k*s(p-1,k)+s(p-1,k-1) ,1<=k<=p-1