有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(…
题目大意 n栋楼有n个不同的高度 现在限制从前面看有F个点,后面看有B个点 分析 最高那栋楼哪都可以看到 剩下的可以最高那栋楼前面分出F-1个组 后面分出B-1个组 每个组的权值定义为组内最高楼的高度 那么\(\binom {F+B-2}{F-1}\)分好组后,组和组之间的顺序是唯一确定的 而且要满足最高楼前面的组,每组最高楼在最左(不然最高楼左边的组内成员能被看到) 在最高楼后面的组同理 确定好每组最高楼后,剩下的楼可以任意排序 又有这样一个结论: (n-1)个点的排列数=n个点的轮换数 那就…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4372 题意: 有n栋高楼横着排成一排,各自的高度为1到n的一个排列. 从左边看可以看到f栋楼,从右边看可以看到b栋楼,并且高的楼会挡住低的楼. 问你这些楼有多少种排列方法. 题解: 由于高的楼会挡住低的楼,所以这些楼首先会被划分成f+b-2个区域(除去中间最高的楼),并且左边有f-1个,右边有b-1个. 对于一个区域(假设在左边),这个区域由若干栋楼组成,并且最高的楼一定在最左边. 那么,由一个区域…
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…
首先想过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…
题目: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} \)…
Count the Buildings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2521    Accepted Submission(s): 817 Problem Description There are N buildings standing in a straight line in the City, numbere…
题意:有n个点上可能有楼房,从前面可以看到x栋楼,从后面可以看到y栋,问楼的位置有多少种可能. 印象中好像做过这个题,…
/** 大意: 给定一系列楼房,都在一条水平线上,高度从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…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625 题意: 有n个房间,每个房间里放着一把钥匙,对应能开1到n号房间的门. 除了1号门,你可以踹开任意一扇门(不用钥匙),但你最多只能踹k次. 问你能将所有门打开的概率. 题解: · P(打开所有门) = 能打开所有门的钥匙放置情况数 / 钥匙放置的总情况数 · 钥匙放置的总情况数 = n! 那么考虑下能打开所有门的钥匙放置情况数... 由于每个房间里有且只有一把钥匙,所以如果将每个房间连向房间内…
<题目链接> <转载于 >>> > 题目大意: 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…
[HDU 3625]Examining the Rooms (第一类斯特林数) 题面 有n个房间,每个房间有一个钥匙,钥匙等概率的出现在n个房间内,每个房间中只会出现且仅出现一个钥匙.你能炸开门k次,问你能进入所有房间的概率.特殊要求:不能炸1号房间的门. T组询问 T<=2000,k<=n<=2000 分析 前置知识(如果你了解斯特林数,可以跳过) 圆排列:把n个元素排在一个圆周上,如果旋转之后两个圆周上的排列一样,那么这两个排列相同 第一类斯特林数S(n,m)表示把n个不同元素构成m…
题目链接: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(…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3625 学习斯特林数:https://blog.csdn.net/qq_33229466/article/details/75042895 https://www.cnblogs.com/gzy-cjoier/p/8426987.html http://www.cnblogs.com/zhouzhendong/p/Stirling-Number.html 关于这道题: 得到一把钥匙后,可以连续开的门与钥匙…
 Count the Trees  Another common social inability is known as ACM (Abnormally Compulsive Meditation). This psychological disorder is somewhat common among programmers. It can be described as the temporary (although frequent) loss of the faculty of sp…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3625 n^2 求斯特林数就行.要减去的就是1号钥匙在1号房间的方案,即 s[ n-1 ][ m-1] . 注意是 <=m . #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; ;…
/** 第一类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…
先和第二类做一个对比 第一类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个元素的集…
一.第二类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)\…