您的位置:首页 > 其它

uva 12034 - Race(dp计数)

2014-05-25 23:20 393 查看


题目链接:uva
12034 - Race

题目大意:有n匹马比赛,问说有多少种排名情况,可以并列。

解题思路:dp[i][j]表示i匹马,最后一名为j的情况,转移方程dp[i][j]=(dp[i−1][j]+dp[i−1][j−1])∗j
#include <cstdio>
#include <cstring>

typedef long long ll;
const int N = 1005;
const ll MOD = 10056;
ll dp

, f
;

void init () {
memset(f, 0, sizeof(f));
memset(dp, 0, sizeof(dp));
dp[1][1] = 1;

for (ll i = 1; i <= 1000; i++) {

for (ll j = 1; j <= i; j++) {
dp[i+1][j] = (dp[i+1][j] + dp[i][j] * j) % MOD;
dp[i+1][j+1] = (dp[i+1][j+1] + dp[i][j] * (j + 1)) % MOD;
f[i] = (f[i] + dp[i][j]) % MOD;
}
}
}

int main () {
init();
int cas, n;
scanf("%d", &cas);
for (int i = 1; i <= cas; i++) {
scanf("%d", &n);
printf("Case %d: %lld\n", i, f
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: