zoukankan      html  css  js  c++  java
  • 亚瑟王

    神一般的DP,f[i][j]表示前i张牌,还剩j轮的概率

    对于第i张,如果它在后j轮中都没有被出出去,则有f[i+1][j]<--f[i][j]*(1-p[i])^j

    如果它被出出去了,则有f[i+1][j-1]<--f[i][j]*(1-(1-p[i])^j)

    边界条件f[0][r]=1

    由于f[i][ ]只对f[i+1][ ]有影响,所以转移的顺序无所谓,但由于我们有对(1-p[i])^j的计算,所以j:1-->r会比较快,233

     1     #include<bits/stdc++.h>
     2     using namespace std;
     3     double f[250][150],p[250];
     4     int d[250];
     5     int main(){
     6         int T;
     7         scanf("%d",&T);
     8         while(T--){
     9             int n,r;
    10             scanf("%d%d",&n,&r);
    11             for(int i=1;i<=n;i++)
    12                 scanf("%lf%d",&p[i],&d[i]);
    13             memset(f,0,sizeof(f));
    14             f[1][r]=1;
    15             double ans=0;
    16             for(int i=1;i<=n;i++){
    17                 double pw=1;
    18                 for(int j=1;j<=r;j++){
    19                     pw*=1-p[i];
    20                     f[i+1][j]+=f[i][j]*pw;
    21                     f[i+1][j-1]+=f[i][j]*(1-pw);
    22                     ans+=f[i][j]*(1-pw)*d[i];
    23                 }   
    24             }
    25             printf("%.10lf
    ",ans);
    26         }
    27         return 0;
    28     }
    29 
    View Code
  • 相关阅读:
    练习1-6
    c语言while(1)和while(0)
    练习1-3
    每天总结模电--(三)
    每天总结模电——贴片电阻,电容的命名规则(二)
    服务器应用的通用功能
    UML
    算法合集
    python笔记
    笔面试(2019秋招阶段)
  • 原文地址:https://www.cnblogs.com/Ngshily/p/5093713.html
Copyright © 2011-2022 走看看