UVA 12034 Race 赛马名次
2016-03-09 22:55
387 查看
给你n个马,问赛马名次的可能性!
这个题了解了下动态规划!
思路
递推:dp[i][j]表示i匹马时候,名次为j的结果!
dp[ i] [j]可能来自两种情况!
首先肯定是来自i - 1 上匹马,
两种情况:
1.名次并列,则j名次可以放置j个位置! 是dp[i-1][j-1] * j
2.名次增加了1,则j-1名共有j个位置可以放置,依旧是 dp[i-1][j] * j.
加起来 取模即可!
这个题了解了下动态规划!
思路
递推:dp[i][j]表示i匹马时候,名次为j的结果!
dp[ i] [j]可能来自两种情况!
首先肯定是来自i - 1 上匹马,
两种情况:
1.名次并列,则j名次可以放置j个位置! 是dp[i-1][j-1] * j
2.名次增加了1,则j-1名共有j个位置可以放置,依旧是 dp[i-1][j] * j.
加起来 取模即可!
#include<bits/stdc++.h> const int maxn = 1000 + 10; const int mod = 10056; int ans[maxn],dp[maxn][maxn]; void init(){ dp[0][0] = 1; for (int i = 1; i < maxn; ++i){ for (int k = 1; k <= i; ++k){ dp[i][k] = (dp[i-1][k] % mod + dp[i-1][k-1] % mod) * k % mod; ans[i] = (dp[i][k] % mod + ans[i] % mod) % mod; } } } int main() { init(); int T,cnt=0,n; scanf("%d",&T); while(T--){ scanf("%d",&n); printf("Case %d: %d\n",++cnt,ans ); } return 0; }
相关文章推荐
- cvReleaseImage出错问题
- Ubuntu Sun JDK 安装
- unable to start the virtual devices
- 初识Java设计模式之单例设计模式
- Linux内核设计第三周——构造一个简单的Linux系统
- 关于hql语句的一些问题
- 编程小练习
- 运用Ajax和JSON对象实现JSP和Servlet的数据传递
- 讲故事,学(Java)设计模式—桥接模式
- Ubuntu安装Sun JDK及如何设置默认java JDK
- ADS
- jdk安装与环境变量的配置
- CSS中的五大字体家族(cursive 手写字体族更吸引我)
- hdu-5578 Friendship of Frog(暴力)
- iOS开发真机调试的超简单步骤
- (十一)processing中的向量运算方法
- OpenCV 2.2.0及以上版本CvvImage的使用问题
- 【PAT】1048. 数字加密(20)
- .net反混淆脱壳工具de4dot的使用
- 学习进度条