HDU 4372 Count the Buildings——第一类斯特林数

题目大意:
n幢楼,从左边能看见f幢楼,右边能看见b幢楼

楼高是1~n的排列。

问楼的可能情况

把握看到楼的本质!

最高的一定能看见!

计数问题要向组合数学或者dp靠拢。但是这个题询问又很多,难以dp

如果把能看见的和之后挡住的看成一组的话。。。

那么可以看成这样:

每一组要固定第一个,,后面可以随便动,n!/n=(n-1)!

第一类斯特林数圆排列!

可分成的组数是:S[n-1][f+b-2](扣除中间最高的)

每一个圆排列只有最大值靠前的唯一展开方式

所以方案数是S[n-1][f+b-2]*C(f+b-2,f-1)(分出这么多组,再选择f-1个放在前面,之后的方案就唯一确定了!)

总结:

思路就是考虑分组,然后找到第一类斯特林数的相似点、

猜你喜欢

转载自www.cnblogs.com/Miracevin/p/10193370.html