• LightOJ1064 Throwing Dice(DP)


    第一眼以为是概率DP,我还不会。不过看题目那么短就读读,其实这应该还不是概率DP,只是个水水的DP。。

    • dp[n][s]表示掷n次骰子点数和为s的情况数
    • dp[0][0]=1
    • dp[i][j]=∑dp[i-1][j-k] (k∈[1,6] 且 j-k>=0)

    要求的概率就是情况数/掷n次骰子的总情况数,掷n次骰子总情况数就是6n

    最后的结果分子分母要互质,而分母的质因子只有2和3,所以只要同除以2和3就能化简。

     1 #include<cstdio>
     2 using namespace std;
     3 long long d[25][151];
     4 int main(){
     5     d[0][0]=1;
     6     for(int i=1; i<25; ++i){
     7         for(int j=1; j<=150; ++j){
     8             for(int k=1; k<=6; ++k){
     9                 if(j-k>=0) d[i][j]+=d[i-1][j-k];
    10             }
    11         }
    12     }
    13     int t,a,b;
    14     scanf("%d",&t);
    15     for(int cse=1; cse<=t; ++cse){
    16         scanf("%d%d",&a,&b);
    17         long long p=0,q=1;
    18         for(int i=b; i<=150; ++i) p+=d[a][i];
    19         for(int i=1; i<=a; ++i) q*=6;
    20         if(p==0){
    21             printf("Case %d: 0
    ",cse);
    22             continue;
    23         }
    24         while(p%2==0 && q%2==0){
    25             p/=2; q/=2;
    26         }
    27         while(p%3==0 && q%3==0){
    28             p/=3; q/=3;
    29         }
    30         if(q==1){
    31             printf("Case %d: 1
    ",cse);
    32             continue;
    33         }
    34         printf("Case %d: %lld/%lld
    ",cse,p,q);
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    PHP获取指定的时间戳
    Elasticsearch
    git有用基本指令
    php中的json_decode
    有用的sql积累
    git submodule使用原理
    mysql重复插入时insert更改为update更新操作
    jpm
    awk 语句
    tomcat 发布简单的html网站
  • 原文地址:https://www.cnblogs.com/WABoss/p/5135613.html
Copyright © 2020-2023  润新知