FZU 2098 刻苦的小芳 (DP)
来源:互联网 发布:淘宝低价引流违规吗 编辑:程序博客网 时间:2024/04/26 02:06
Description
小芳是一个努力用功的好孩子。快高考了,她正在努力备战中。她要完成n份作业,然后把完成的作业堆成老高的一堆。为了保证学习的效率,她总是在一份作业写完后还会回过头去复习一下。因此她总是在写完几份作业就从已写完的作业堆中从上到下拿几本来复习,要知道如果不这么做的话把作业弄乱就麻烦了。另外,她还发现,如果她的书叠得太高了就会因为重心不稳而倒下,所以她必须保证她叠的书不能超过k份。在写完作业休息之余,她看了那些作业,突然想到了一个问题。她想知道她这么复习将可能多少种复习的顺序。为了解答这个问题,于是她特地来请教学过的你来回答。你能帮她吗?
Input
输入有多组case(<=20)。每组case有一行,有两个数n,k,分别表示作业总数和书可以叠的最大数量。n和k均为小于100的非负数。
Output
对于每个询问,输出Case 例子序号: 顺序的种类数。具体详见例子。 答案对10^9+7取模。
Sample Input
5 25 55 86 20 13 0
Sample Output
Case 1: 16
Case 2: 42
Case 3: 42
Case 4: 32
Case 5: 1
Case 6: 0
这道题如果没有K的限制,是一道卡特兰数的模板题,加上K的限制之后,DP一下即可。
只需要记录到i位置高度为j的方案数,代码如下。
#include<iostream>#include<string.h>#include<algorithm>#include<queue>#include<stdio.h>#include<map>using namespace std;const int mod=1e9+7;const int N=10005;int n,m;long long dp[105][105];int main(){ int i,j,k,T,zz=0; while(scanf("%d%d",&n,&m)!=EOF) { memset(dp,0,sizeof(dp)); dp[0][0]=1; for(i=1;i<=n;i++) { for(j=1;j<=m-1;j++) { for(k=j-1;k<=m;k++) { dp[i][j]+=dp[i-1][k]; } dp[i][j]%=mod; } dp[i][0]=dp[i][1]; } if(m==1) dp[n][0]=1; printf("Case %d: %I64d\n",++zz,dp[n][0]); } return 0;}
0 0
- FZU 2098 刻苦的小芳 (DP)
- FZU 2098 刻苦的小芳(卡特兰数,动态规划)
- FZU2098 刻苦的小芳
- Fzu 2186 小明的迷宫(状态压缩dp + bfs)
- FZU 2186 小明迷宫寻宝 (状压Dp+bfs)
- FZU 2098 DP
- 刻苦铭心的WCHAR
- FZU 1180 MiniCost(dp)
- (福大2015年3月月赛)FZU 2186 小明的迷宫 (BFS+状压DP)
- Fzu 2186 小明的迷宫【Bfs预处理+TSP状压dp】好题~
- FZU 2101 大三的美好时光 (hash,链表,dp)
- FZU 2200 cleaning (环dp的处理)
- FZU 2204 7 (环dp的处理)
- FZU 2101 大三的美好时光 (DP+线段树)
- fzu 1896 神奇的魔法数字(数位dp)
- 你真的不够刻苦
- FZU 2186 小明迷宫寻宝 状压Dp
- fzu 2172 辣鸡题 胡乱DP的典型
- Java判断两个二叉树是否相同
- Content的startActivity方法需添加FLAG_ACTIVITY_NEW_TASK flag
- 两个链表的第一个公共结点
- uva11464 Even Parity
- Error:(26, 13) Failed to resolve: com.squareup.picasso:picasso:2.5.2 的解决
- FZU 2098 刻苦的小芳 (DP)
- 打印堆栈
- 蓝桥杯B六----格子中居中输出问题
- 了解sitemesh在网站中的功能
- 网页页面NULL值对浏览器兼容性的影响
- ArcGIS教程:地理处理服务示例(选择数据)(一)
- 用sae新浪云,mao10cms怎样用php连接mysql???
- Hibernate之缓存管理
- CO2 convex sets