UVa 12034 - Race
2014-08-13 22:09
239 查看
12034 - Race
时间限制:1.000秒题目链接:uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3185
这算是排列组合吧,然后递推……
题目第一行输入一个数字T,代表T组数据。
接下来T行每行输入一个数字n(1 ≤ n≤ 1000)。
要求算出n匹马比赛可能出现的所有情况的数量。例如n == 2时,最终名次有三种可能:并列第一,A第一,B第一。数量对10056取余。
刘汝佳《算法竞赛入门经典(第二版)》已提供思路:
设答案为f(n),设第一名有i个人,则有C(n, i)种可能性,接下来有f(n - i)种可能性,因此答案为ΣC(n, i)*f(n - i)。
这里的C(n, i)代表组合数,公式为C(n, i) = n! / ( k! * (n - k)! ),但是直接算阶乘到21就会直接超出unsigned long long的上限,所以这里用了递推的办法:
memset(C, 0, sizeof(C)); for(int i = 0; i <= 1000; ++i) { C[i][0] = 1; for(int j = 1; j <= i; ++j) C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % 10056; // 按题意对10056取余 }
因为n ≤ 1000,所以很适合打表啊……
看到K神是程序开始前提前算一遍把结果存起来到时候直接查……我是直接用程序跑出了代码……好吧我猥琐了点……
打表的程序:
提交的代码:
相关文章推荐
- UVa 12034 Race
- UVA - 12034 Race
- UVa 12034 Race (递推+组合数学)
- (UVA - 12034)Race(组合数,dp)
- UVA 12034(p332)----Race
- UVA 12034 Race(递推)
- uva 12034 Race
- Race UVA - 12034
- uva 12034 Race
- UVa 12034 - Race(组合+递推)
- UVA 12034 Race
- UVa 12034 (递推) Race
- UVA 12034 Race
- UVA 12034 Race
- uva 12034 Race(递推+组合数)
- uva 12034 - Race(dp计数)
- UVA 12034 Race
- 【UVA】12034-Race(递推,组合数打表)
- CSU-ACM2017暑期训练3-递推与递归 H - Race UVA - 12034
- uva 12034 Race(dp)