zoukankan      html  css  js  c++  java
  • UVA12034Race(DP)

    题目链接

    题意:A、B两人赛马,最终名次有三种可能:并列第一;A第一,B第二;B第一,A第二。输入n,求 n 人赛马时最终名次的可能,结果对10056取余

    分析:对于 i 匹马来说,有 i 中可能,设dp[i][j]表示 i 匹马,j次到达的方案数,递推方程式 dp[i][j] = j * dp[i - 1][j] + j * dp[i -1][j - 1] 对于第i匹马来看有两种可能一是自已一个到达,所以j * dp[i - 1][j - 1],因为不知道是第几次到达,j中可能;二是 和其他的一起到达 dp[i - 1][ j ] * j;

     1 #include <cstring>
     2 #include <iostream>
     3 
     4 #include <cstdio>
     5 using namespace std;
     6 const int Mod = 10056;
     7 const int Max = 1000;
     8 int dp[Max + 10][Max + 10];
     9 int sum[Max + 10];
    10 void init()
    11 {
    12     memset(dp, 0, sizeof(dp));
    13     dp[0][0] = 1;
    14     for(int i = 1; i <= Max; i++)
    15     {
    16         int ans = 0;
    17         for(int j = 1; j <= i; j++)
    18         {
    19             dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % Mod * j % Mod;
    20             ans = (ans + dp[i][j]) % Mod;
    21         }
    22         sum[i] = ans;
    23     }
    24 }
    25 int main()
    26 {
    27     int test, n;
    28     init();
    29     scanf("%d", &test);
    30     for(int t = 1; t <= test; t++)
    31     {
    32         scanf("%d", &n);
    33         printf("Case %d: %d
    ", t, sum[n]);
    34     }
    35 }
    View Code
  • 相关阅读:
    python操作Redis详解
    python操作SQLAlchemy
    设计模式详解及Python实现
    计算机基础
    DRF内置过滤组件与排序组件结合使用
    LTE
    LTE
    LTE
    LTE
    LTE
  • 原文地址:https://www.cnblogs.com/zhaopAC/p/5261958.html
Copyright © 2011-2022 走看看