hdu2512 第二类斯特林数

2024-02-13 16:58
文章标签 第二类 斯特林 hdu2512

本文主要是介绍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

递推式的解释:

若p-1个物体已经排成了k个集合,那么第p个物体可以放入k个集合中的任意一个,那么就有s(p,k) = k*s(p-1,k)种方法数;
若p-1个物体排成了k-1个集合,那么第p个物体要想满足k个集合必须自成一个集合,那么就有s(p,k) = s(p-1,k-1)种方法数;





#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;#define MAXN 2010
#define mod 1000int s[MAXN][MAXN];
void init()
{for(int i=1;i<MAXN;i++){s[i][0]=0;s[i][i]=1;for(int j=1;j<i;j++)s[i][j]=(j*s[i-1][j]+s[i-1][j-1])%mod;}
}int main()
{init();//freopen("in.txt","r",stdin);int T,n,ans;scanf("%d",&T);while(T--){ans=0;scanf("%d",&n);for(int i=1;i<=n;i++)ans=(ans+s[n][i])%mod;printf("%d\n",ans);}return 0;
}


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



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

相关文章

近似求阶乘-斯特林公式

今天做Factstone Benchmark这个题,需要阶乘的近似值,用常规方法就是TLE,虽然我避开求阶乘,用为完成的中间值做为判断条件进而避免了TLE,但是这样的方法还是感觉不靠谱,经过查阅,果然有种可以近似求阶乘的东西,斯特林公式。 (baidu)斯特林公式(Stirling's approximation)是一条用来取n的阶乘的近似值的数学公式。一般来说,当n很大的时候,n阶乘的计算量十

组合数学 —— 斯特林数(Stirling)

【第一类斯特林数】 1.定理 第一类斯特林数 S1(n,m) 表示的是将 n 个不同元素构成 m 个圆排列的数目。 2.递推式 设人被标上1,2,.....p,则将这 p 个人排成 m 个圆有两种情况: 在一个圆圈里只有标号为 p 的人自己,排法有 S1(n-1,m-1) 个。p 至少和另一个人在一个圆圈里。 这些排法通过把 1,2....n-1 排成 m 个圆再把 n 放在 1,2.

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

Hdu 3625 Examining the Rooms[第一类斯特林数]

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625 题目意思: n(n <= 20)个房间。n把钥匙。每个房间有一把钥匙。一把钥匙只能开一把锁。 现在一个人手里没有钥匙,他可以强行打开一个门,然后拿出这个房间内的钥匙。不能够强行打开第一个门。。。 问最多强行打开k(k <= n)个房间的门的情况下,可以全部打开所有门的概率。。 分析

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

贝尔数 定义: 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

POJ 1430 Binary Stirling Numbers (斯特林数)

题意:给你n,k,求S(n,k) mod 2。 题解:没什么好说的,知道公式就好解决。C(z,w) = z! / [(w!) * (z-w)!],要判断奇偶性只需要统计一下分子分母的所含的因子2的个数。 #include<cstdio>#define lint __int64lint getTwo ( lint x ){lint cnt = 0, bit = 2;wh

第二类——数学题

有时很容易栽在一些边界条件。考虑全面的习惯要在平时的训练中多加注意。 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