/** 大意: 给定一系列楼房,都在一条水平线上,高度从1到n,从左侧看能看到f个, 从右侧看,能看到b个,问有多少种这样的序列.. 思路: 因为肯定能看到最高的,,那我们先假定最高的楼房位置确定,那么在其左边还有f-1个能看见,在其右边还有b-1个,能看见..所以可以这样将题目转化: 将除最高楼之外的n-1个楼,分成f-1+b-1 组,在最高楼左边f-1 组,在其右边b-1组,那么分成f-1+b-1 组 就是第一类Stirling数.s[n-1][f-1+b-1]..左边f-1 组,在其右边b…
#include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <cmath> #include <cstring> #include <stack> #include <set> #include <map> #include <vector> using namespace st…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4372 题意: 有n栋高楼横着排成一排,各自的高度为1到n的一个排列. 从左边看可以看到f栋楼,从右边看可以看到b栋楼,并且高的楼会挡住低的楼. 问你这些楼有多少种排列方法. 题解: 由于高的楼会挡住低的楼,所以这些楼首先会被划分成f+b-2个区域(除去中间最高的楼),并且左边有f-1个,右边有b-1个. 对于一个区域(假设在左边),这个区域由若干栋楼组成,并且最高的楼一定在最左边. 那么,由一个区域…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625 题意: 有n个房间,每个房间里放着一把钥匙,对应能开1到n号房间的门. 除了1号门,你可以踹开任意一扇门(不用钥匙),但你最多只能踹k次. 问你能将所有门打开的概率. 题解: · P(打开所有门) = 能打开所有门的钥匙放置情况数 / 钥匙放置的总情况数 · 钥匙放置的总情况数 = n! 那么考虑下能打开所有门的钥匙放置情况数... 由于每个房间里有且只有一把钥匙,所以如果将每个房间连向房间内…
/** 第一类Stirling数是有正负的,其绝对值是包含n个元素的集合分作k个环排列的方法数目. 递推公式为, S(n,0) = 0, S(1,1) = 1. S(n+1,k) = S(n,k-1) + nS(n,k). 大意: 有n个房间,n把钥匙,钥匙在房间中,问: 在最多破坏k个门的情况下,问有多少种方法,可以将所有的门打开,注意,不能破坏第一个门 思路: 即是将n个元素分成m个环,得排列方式..除掉第一个元素独立成环的方式 可以得出,这是第一类stirling数... **/ #inc…
<题目链接> <转载于 >>> > 题目大意: N座高楼,高度均不同且为1~N中的数,从前向后看能看到F个,从后向前看能看到B个,问有多少种可能的排列数. 0 < N, F, B <= 2000 解题分析: 首先我们知道一个结论:n的环排列的个数与n-1个元素的排列的个数相等,因为P(n,n)/n=(n-1)!. 可以肯定,无论从最左边还是从最右边看,最高的那个楼一定是可以看到的. 假设最高的楼的位置固定,最高楼的编号为n,那么我们为了满足条件,可以在…
第一类Stirling数 首先设 $$S_k(n)=\sum_{i=0}^ni^k$$ 根据第一类斯特林数的定义(P是排列数,C是组合数,s是Stirling) $$C_n^k={P_n^k\over k!}={\sum_{i=0}^k(-1)^{i+k}s(k,i)n^i\over k!}$$ 变形得 $$ n^k ={\sum_{i=0}^{k-1}(-1)^{i+k}s(k,i)n^i}-k! C_n^k$$ $n$ 从1取到n累加, $$S_k(n)=\sum_{j=0}^n(k!C_j…
先和第二类做一个对比 第一类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个元素的集…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625 题意: n个房间,房间里面放着钥匙,允许破门而入k个,拿到房间里面的钥匙后可以打开对应的门,但是1号门不能破门而入,求这样检查完所有房间,概率是多少? 分析: 钥匙随机放到房间,全排列有n!: n个房间,破k个门进入,就是第一类斯特林数S(n,k): 但是,第一个门不能破门而入,就是要减去S(n-1,k-1): 然后求和SUM = S(n,i)  {1<=i<=k} 概率就是 SUM / N…
Count the Buildings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1249    Accepted Submission(s): 408 Problem Description There are N buildings standing in a straight line in the City, numbere…
一.第二类Stirling数 定理:第二类Stirling数S(p,k)计数的是把p元素集合划分到k个不可区分的盒子里且没有空盒子的划分个数. 证明:元素在哪些盒子并不重要,唯一重要的是各个盒子里装的是什么,而不管哪个盒子装了什么. 递推公式有:S(p,p)=1 (p>=0)         S(p,0)=0  (p>=1)         S(p,k)=k*S(p-1,k)+S(p-1,k-1)   (1<=k<=p-1) .考虑将前p个正整数,1,2,.....p的集合作为要被…
做了老是忘…… 实际问题: 找维基百科.百度百科…… 第一类Stirling数 n个元素构成m个圆排列 S(n,m)=S(n-1,m-1)+(n-1)*S(n-1,m) 初始 S(0,0)=1 S(n,0)=0(n<>0) 第n个元素: 1.形成一个新的环 原来n-1个元素,m-1个环 2.加入原来的任意一个环,插入到原来其中一个数(n-1个)的左/右边 原来n-1个元素,m个环 第二类Stirling数 n个元素分成m个集合 S(n,m)=S(n-1,m-1)+m*S(n-1,m) 初始 S…
题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=3625 题目大意: 有N个房间,每一个房间的要是随机放在某个房间内,概率同样.有K次炸门的机会. 求能打开全部房间门,进入全部房间的概率有多大. 解题思路: 门和钥匙的相应关系出现环.打开一个门后,环内的门都能够打开. 也就意味着: N个房间的钥匙与门形成1~K个环的概率有多大. 也就是求N个元素.构成K个以内的环,且1不成自环的概率. N个元素形成K个环的方法数是第一类stirling数 S(N…
@维基百科 在组合数学,Stirling数可指两类数,都是由18世纪数学家James Stirling提出的. 第一类 s(4,2)=11 第一类Stirling数是有正负的,其绝对值是个元素的项目分作个环排列的方法数目.常用的表示方法有. 换个较生活化的说法,就是有个人分成组,每组内再按特定顺序围圈的分组方法的数目.例如: {A,B},{C,D} {A,C},{B,D} {A,D},{B,C} {A},{B,C,D} {A},{B,D,C} {B},{A,C,D} {B},{A,D,C} {C…
都是数学题 思维最重要,什么什么数都没用,DP直接乱搞(雾.. 参考LH课件,以及资料:http://daybreakcx.is-programmer.com/posts/17315.html 做到有关的题目会更新 n个乒乓球放到m个盒子里的方案数 1.球相同,盒子不同,不允许空 分成m段,n-1个空选m-1个放隔板 ,$\binom{n-1}{m-1}$ 2.球相同,盒子不同,允许空 $(1)$ 加入m个球变成不允许空 $(2)$ m-1个隔板和球放在一起,从中选m-1个做隔板 $C_{n+m…
上一道例题 我们来介绍第二类Stirling数 定义 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的元素拆分成m个集合的方案数,记为 或者 .和第一类Stirling数不同的是,集合内是不考虑次序的,而圆排列是有序的.常常用于解决组合数学中几类放球模型.描述为:将n个不同的球放入m个无差别的盒子中,要求盒子非空,有几种方案? 第二类Stirling数要求盒子是无区别的,所以可以得到其方案数公式: 递推式 第二类Stirling数的推导和第一类Stirling数类似,可以从定义出…
题目传送门 题意:给出$N$个高度从$1$到$N$的建筑,问有多少种从左往右摆放这些建筑的方法,使得从左往右看能看到$A$个建筑,从右往左看能看到$B$个建筑.$N \leq 5 \times 10^4 , A,B \leq 100$ 第一次看到第一类$Stirling$数有用emmm 考虑将某种方案中最高的建筑拿出来,将分成的两半中可以看得见的与被它挡住的建筑分成一个部分,如下 绿色的当然是最高的,剩下的两个部分分成了1,2,3三个部分.可以知道我们总共需要$A+B-2$这样的部分,而其中$A…
第二类斯特林数 第二类Stirling数:S2(p, k) 1.组合意义:第二类Stirling数计数的是把p个互异元素划分为k个非空集合的方法数 2.递推公式: S2(0, 0) = 1 S2(p, 0) = 0 ( p >= 1)  显然p >= 1时这种方法不存在 S2(p, p) = 1  显然这时每个元素看为一个集合 S2(p, k) = k * S2(p - 1, k) + S2(p - 1, k - 1) 考虑将1,2,3,...,p划分为k个非空集合,考虑p ⑴将p单独划分为一…
Examining the Rooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1661    Accepted Submission(s): 1015 Problem Description A murder happened in the hotel. As the best detective in the town, yo…
Catalan&Stirling数 Tags:数学 作业部落 评论地址 Catalan数 \(1,1,2,5,14,42,132,429,1430,4862,16796,58786...\) 定义式: \[C[x+1]=C[0]C[x]+C[1]C[x-1]+C[2]C[x-2]...+C[x]C[0]\] 一.递推公式 \[C[n]=\frac{C[n-1]*(4*n-2)}{n+1}\]\[C[n]=\frac{C(2n,n)}{n+1}\]\[C[n]=C(2n,n)-C(2n,n-1)\…
参考: http://blog.csdn.net/qwb492859377/article/details/50654627 http://blog.csdn.net/acdreamers/article/details/8521134 http://blog.csdn.net/sr_19930829/article/details/40888349 球,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,…
组合数学的实质还是DP,但是从通式角度处理的话有利于FFT等的实现. 首先推荐$Candy?$的球划分问题集合: http://www.cnblogs.com/candy99/p/6400735.html 以下部分节选自 http://blog.csdn.net/sr_19930829/article/details/40888349 第一类Stirling数 定理:第一类Stirling数$s(p,k)$计数的是把p个对象排成k个非空循环排列的方法数. 证明:把上述定理叙述中的循环排列叫做圆圈…
第一类: 定义 第一类Stirling数表示表示将 n 个不同元素构成m个圆排列的数目.又根据正负性分为无符号第一类Stirling数    和带符号第一类Stirling数    .有无符号Stirling数分别表现为其升阶函数和降阶函数的各项系数[类似于二项式系数[3]  ],形式如下: 对于有无符号Stirling数之间的关系有    .组合数学中的第一类Stirling数一般指无符号的第一类Stirling数.意思是n个不同元素构成m个圆排列的方案数.   所以 f(a,b)=f(a,b…
首先想过n^3的组合方法,即f(i,j,k)=f(i-1,j,k)*(i-2)+f(i-1,j-1,k)+f(i-1,j,k-1),肯定搞不定 然后想了好久没有效果,就去逛大神博客了,结果发现需要用到第一类stirling数 第一类stirling数S(n,m)表示的是n个数排成m个非空环排列的数目 每个环排列中必然有一个是可以看见的,然后再对这m个环求组合数 不难理解,但是很难想到 #include <stdio.h> #include <string.h> #define mo…
第一类Stirling数 定义 $$\begin{aligned}(x)_n & =x(x-1)...(x-n+1)\\&= s(n, 0) + s(n,1)x +..+s(n,n)x^n\\\end{aligned}$$ 例如,$n=3$ 时, $(x)3 = x(x-1)(x-2)$ $(x)3 = x^0 + 2x -3x^2 + x^3$ 于是 $s(3,0)=0,s(3,1)=2,s(3,2)=-3,s(3,3)=1$ 有符号斯特林数和无符号斯特林数有如下关系: $$s(n, k…
题意:N座高楼,高度均不同且为1~N中的数,从前向后看能看到F个,从后向前看能看到B个,问有多少种可能的排列数. 0 < N, F, B <= 2000 首先我们知道一个结论:n的环排列的个数与n-1个元素的排列的个数相等,因为P(n,n)/n=(n-1)!. 可以肯定,无论从最左边还是从最右边看,最高的那个楼一定是可以看到的. 假设最高的楼的位置固定,最高楼的编号为n,那么我们为了满足条件,可以在楼n的左边分x-1组,右边分y-1组,且用每 组最高的那个元素代表这一组,那么楼n的左边,从左到…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4372 首先,最高的会被看见: 然后考虑剩下 \( x+y-2 \) 个被看见的,每个带了一群被它挡住的楼,其实方案数是圆排列,每个圆从最高的楼开始断掉都是不同的方案: 再把这 \( x+y-2 \) 个圆排列分成两组放左右两边,它们按最高楼的高度就自动有顺序了,不必再算: \( s[i][j] \) 表示第一类斯特林数,答案就是 \( s[n-1][x+y-2] * C_{x+y-2}^{x-1} \)…
有n(<=2000)栋楼排成一排,高度恰好是1至n且两两不同.现在从左侧看能看到f栋,从右边看能看到b栋,问有多少种可能方案. T组数据, (T<=100000) 自己只想出了用DP搞 发现最高的楼一定能看到,分成了左右两个问题 f[i][j]表示i栋楼从左面可以看到j栋方案数,转移枚举最高楼左面有几栋楼,乘上个组合数和剩下的排列 问题是DP完了求ans需要O(n)枚举最高楼在哪........ 然后发现好多人用了第一类sirtling数 考虑一栋被看到的楼,它会挡住它右面的几栋楼,这几栋楼可…
题目大意:n幢楼,从左边能看见f幢楼,右边能看见b幢楼 楼高是1~n的排列. 问楼的可能情况 把握看到楼的本质! 最高的一定能看见! 计数问题要向组合数学或者dp靠拢.但是这个题询问又很多,难以dp 如果把能看见的和之后挡住的看成一组的话... 那么可以看成这样: 每一组要固定第一个,,后面可以随便动,n!/n=(n-1)! 第一类斯特林数圆排列! 可分成的组数是:S[n-1][f+b-2](扣除中间最高的) 每一个圆排列只有最大值靠前的唯一展开方式 所以方案数是S[n-1][f+b-2]*C(…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2643 题意: 有n个个选手参赛,问排名有多少种情况(可以并列). 题解: 简化问题: 将n个不同的元素放到i个有差别的盒子中,情况数为P(n,i),求∑P(n,i) (1<=i<=n) 再简化: 将n个不同的元素放到i个无差别的盒子中,情况数为S(n,i),求∑( S(n,i)*i! ) (1<=i<=n) 哇这是第二类Stirling数 ( ̄▽ ̄)~* 递推式:s(n,k) = s(…