当前位置:网站首页>HDU 4372:Count the Buildings (Stirling数)
HDU 4372:Count the Buildings (Stirling数)
2022-08-10 11:04:00 【51CTO】
Count the Buildings
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1300 Accepted Submission(s): 422
Problem Description
There are N buildings standing in a straight line in the City, numbered from 1 to N. The heights of all the buildings are distinct and between 1 and N. You can see F buildings when you standing in front of the first building and looking forward, and B buildings when you are behind the last building and looking backward. A building can be seen if the building is higher than any building between you and it.
Now, given N, F, B, your task is to figure out how many ways all the buildings can be.
Input
First line of the input is a single integer T (T<=100000), indicating there are T test cases followed.
Next T lines, each line consists of three integer N, F, B, (0<N, F, B<=2000) described above.
Output
For each case, you should output the number of ways mod 1000000007(1e9+7).
Sample Input
Sample Output
2 1
N座高楼,高度均不同且为1~N中的数,从前向后看能看到F个,从后向前看能看到B个,问有多少种可能的排列数。
首先我们知道一个结论:n的环排列的个数与n-1个元素的排列的个数相等,因为P(n,n)/n=(n-1)!。
可以肯定,无论从最左边还是从最右边看,最高的那个楼一定是可以看到的.
假设最高的楼的位置固定,最高楼的编号为n,那么我们为了满足条件,可以在楼n的左边分x-1组,右边分y-1组,且用每
组最高的那个元素代表这一组,那么楼n的左边,从左到右,组与组之间最高的元素一定是单调递增的,且每组中的最高元
素一定排在该组的最左边,每组中的其它元素可以任意排列(相当于这个组中所有元素的环排列)。右边反之亦然。
然后,可以这样考虑这个问题,最高的那个楼左边一定有x-1个组,右边一定有y-1个组,且每组是一个环排列,这就引出
了第一类Stirling数(n个人分成k组,每组内再按特定顺序围圈的分组方法的数目)。
我们可以先把n-1个元素分成x-1+y-1组,然后每组内部做环排列。再在所有组中选取x-1组放到楼n的左边。
所以答案是ans(n, f, b) = C[f + b - 2][f - 1] * S[n - 1][f + b - 2];
AC代码:
边栏推荐
- Do self-media monthly income tens of thousands?Several self-media tools that bloggers are using
- 【无标题】
- [Brave food, not afraid to write the linked list] The problem of the penultimate node of the linked list
- 【勇敢饭饭,不怕刷题之链表】链表反转的几种情况
- POJ 3101 Astronomy (Mathematics)
- 一文带你搞懂中断按键驱动程序之poll机制
- [Go WebSocket] 多房间的聊天室(一)思考篇
- 负载均衡原理分析与源码解读
- Centos7 environment uses Mysql offline installation package to install Mysql5.7
- 不止跑路,拯救误操作rm -rf /*的小伙儿
猜你喜欢
Do self-media monthly income tens of thousands?Several self-media tools that bloggers are using
Open Office XML 格式里如何描述多段具有不同字体设置的段落
In August the DB list latest scores - database Engines
从产品角度看 L2 应用:为什么说这是一个游乐场?
LeetCode50天刷题计划(Day 18—— 搜索旋转排序数组(8.50-12.00)
怎么加入自媒体,了解这5种变现模式,让账号快速变现
LeetCode50天刷题计划(Day 19—— 在排序数组中查找元素的第一个和最后一个位置(9.10-10.40)
模块九 - 设计电商秒杀系统
[E-commerce operation] Do you really understand social media marketing (SMM)?
第5章相似矩阵及二次型(4)
随机推荐
【机器学习】浅谈正规方程法&梯度下降
Short video software development - how to break the platform homogenization
杭电多校-Loop-(不确定性贪心+线段树)
Licking Exercise - 58 Verifying Binary Search Trees
关于“码农”的一点自嘲解构
rider内Mono脚本找不到引用资源
Weilai-software development engineer side record
即时零售业态下如何实现自动做账?
模块九 - 设计电商秒杀系统
不止跑路,拯救误操作rm -rf /*的小伙儿
做自媒体月入几万?博主们都在用的几个自媒体工具
2022年裁员潮,失业程序员何去何从?
建校仅11年就入选“双一流” ,这所高校是凭什么做到的?
HCIP ---- VLAN
Nocalhost - 让云原生时代的开发更高效
阻塞 非阻塞 poll机制 异步
为什么Redis很快
LeetCode_443_压缩字符串
LAXCUS分布式操作系统安全管理
LeetCode_152_乘积最大子数组