24h購物| | PChome| 登入
2012-11-28 08:01:55| 人氣390| 回應0 | 上一篇 | 下一篇

[PTC][201211] PD Happy Teachers’ Day

推薦 0 收藏 0 轉貼0 訂閱站台

動規作法,dp[n][m] n 個東西 m 堆。
dp[n+1][j] += dp[n][j]*j (選其中一堆, j 種可能)
dp[n+1][j+1] += dp[n][j] (多開一堆)



#include <stdio.h>
long long dp[2005][2005];
int main() {
    int n, i, j;
    int ans[2005] = {};
    dp[1][1] = 1;
    for(i = 1; i <= 2000; i++) {
        for(j = 1; j <= i; j++) {
            ans[i] += dp[i][j];
            if(ans[i] >= 9999997)
                ans[i] -= 9999997;
            dp[i+1][j] += (dp[i][j]*j)%9999997;
            dp[i+1][j+1] += dp[i][j];
            dp[i+1][j] %= 9999997;
            dp[i+1][j+1] %= 9999997;
        }
    }
    while(scanf("%d", &n) == 1)
        printf("%d\n", ans[n]);
    return 0;
}

台長: Morris
人氣(390) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 資訊競賽 |
此分類下一篇:[PTC][201211] PE Coin Game
此分類上一篇:[PTC][201211] PB Job Allocation

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文