hdu 4372 Count the Buildings
发布日期:2021-11-16 12:56:56
浏览次数:2
分类:技术文章
本文共 619 字,大约阅读时间需要 2 分钟。
n栋楼一列,从前能看到f栋,从后能看到b栋,楼高分别是1~n。“看得到”某楼就是指你和楼之间没有更高的楼,问楼的排列有多少种可能。
因为最高的楼左右都能看到,所以忽略它。剩下的楼可以分为,f-1+b-1组,看得到的楼作为这组的代表,组内其他楼被挡住了。从这f-1+b-1组中选f-1组放到左边去就行了。因为每一组中,只有一栋楼能看到,其他的楼被挡住了可以任意排列,注意到a个元素的环排列等于a-1个元素的排列,转换一下正好符合第一类斯特林数的定义。
#include#include #include #include using namespace std; #define ll long longconst int maxn=2010;const int mod =1000000007;ll c[maxn][maxn];ll s[maxn][maxn];int main(){ for(int i=0;i >t; while(t--){ int n,f,b; scanf("%d%d%d",&n,&f,&b); ll ans = 0 ; ans = s[n-1][f+b-2]*c[f+b-2][f-1]; ans%=mod; printf("%I64d\n",ans); } return 0;}
转载地址:https://blog.csdn.net/squee_spoon/article/details/47839787 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月12日 14时37分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android应用构建:12:使用gradle wrapper进行APK文件构建
2019-04-27
Android应用构建:13:使用sdkmanager自动接受license的方法
2019-04-27
Android应用构建:14:构建Android SDK的自定义镜像
2019-04-27
Android应用构建:15:使用gradlew和Android SDK镜像构建安卓应用
2019-04-27
Android应用构建:16:使用gradle和Android SDK镜像构建安卓应用
2019-04-27
实例学习Ansible系列(18)服务管理的几种方式
2019-04-27
实例学习Ansible系列(19)drop-if-exist不出错的写法
2019-04-27
实例学习Ansible系列(20)retry + sleep的常见写法
2019-04-27
实例学习Ansible系列(21)从标准输出获取循环的列表
2019-04-27
Kubernetes 1.17 正式发布:22项功能改进
2019-04-27
Easypack: 使用Ansible快速部署Kubernetes集群
2019-04-27
kubenertes 1.17集群部署总结
2019-04-27
持续集成之企业微信通知:1:群机器人使用方法介绍
2019-04-27
持续集成之企业微信通知:2:推送消息格式说明
2019-04-27
持续集成之企业微信通知:3:推送消息示例(text、markdown、news)
2019-04-27
持续集成之企业微信通知:4:推送消息示例(image)
2019-04-27
持续集成之钉钉消息推送:1:群机器人使用方法介绍
2019-04-27
持续集成之钉钉消息推送:2:推送消息格式说明
2019-04-27
持续集成之钉钉消息推送:3:推送消息示例
2019-04-27
持续集成之消息推送:钉钉与企业微信的群聊机器人通用示例
2019-04-27