FZU2098 刻苦的小芳
来源:互联网 发布:挽歌seo 编辑:程序博客网 时间:2024/04/27 10:14
Description
小芳是一个努力用功的好孩子。快高考了,她正在努力备战中。她要完成n份作业,然后把完成的作业堆成老高的一堆。为了保证学习的效率,她总是在一份作业写完后还会回过头去复习一下。因此她总是在写完几份作业就从已写完的作业堆中从上到下拿几本来复习,要知道如果不这么做的话把作业弄乱就麻烦了。另外,她还发现,如果她的书叠得太高了就会因为重心不稳而倒下,所以她必须保证她叠的书不能超过k份。在写完作业休息之余,她看了那些作业,突然想到了一个问题。她想知道她这么复习将可能多少种复习的顺序。为了解答这个问题,于是她特地来请教学过的你来回答。你能帮她吗?
Input
输入有多组case(<=20)。每组case有一行,有两个数n,k,分别表示作业总数和书可以叠的最大数量。n和k均为小于100的非负数。
Output
对于每个询问,输出Case 例子序号: 顺序的种类数。具体详见例子。 答案对10^9+7取模。
Sample Input
5 2
5 5
5 8
6 2
0 1
3 0
Sample Output
Case 1: 16
Case 2: 42
Case 3: 42
Case 4: 32
Case 5: 1
Case 6: 0
Hint
如果没法堆当然输出0
题意简单来说就是给一个最大为k的栈,问n个数字的出栈序列有多少种。
#include<cmath>#include<vector>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL;const int mod=1e9+7;const int maxn=1e2+10;int n,m,f[maxn][maxn],T,t=0;int main(){//scanf("%d",&T);while (~scanf("%d%d",&n,&m)){memset(f,0,sizeof(f));f[0][0]=1;for (int i=1;i<=n;i++){LL sum=0;for (int j=m;j>=0;j--) {(sum+=f[i-1][j])%=mod;f[i][j+1]=sum;}}LL ans=0;for (int i=0;i<=m;i++) (ans+=f[n][i])%=mod;printf("Case %d: %lld\n",++t,ans);}return 0;}
0 0
- FZU2098 刻苦的小芳
- FZU 2098 刻苦的小芳 (DP)
- FZU 2098 刻苦的小芳(卡特兰数,动态规划)
- 刻苦铭心的WCHAR
- 你真的不够刻苦
- 一个程序员10年尖酸刻苦的经历
- 坚持QT的学习,动脑勤奋刻苦上进。
- 脚踏实地勤奋刻苦——我想要的生活是什么
- 刻苦努力----经验丰富的架构师--基于项目
- 强化知识,刻苦学习
- 从此刻苦专研
- 耐心,刻苦,尝试,失败
- 刻苦才能成事
- 刻苦才能成事
- 刻苦铭心2014
- 刻苦练习CCF
- 刻苦练习CCF
- 刻苦学习Android开发
- WebLogic启动时BEA-171522异常
- 前端学习笔记(六)
- The first day to learn Android
- lightoj 1236 - Pairs Forming LCM 【唯一分解定理】
- ChildLiking
- FZU2098 刻苦的小芳
- request.getParameterMap()使用方法
- bettercap--优秀的MITM攻击测试框架
- SRM514~523总结
- 蓝桥杯_算法提高_道路与航道(典型的SPFA算法问题)
- 机器学习系列(8)_读《Nature》论文,看AlphaGo养成
- Bootstrap 小图标
- 结构体定义 typedef struct 用法详解和用法小结
- 在Swift中如何使用C中的Struct