• 【BZOJ】4008: [HNOI2015]亚瑟王


    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4008


    这题主要在于:先算概率,再算期望!

    一轮一轮的计算似乎很复杂,每一轮它其实是可以看作一次机会

    考虑${f[i][j]}$表示已经按照顺序考虑完了第$i$张卡牌,第$i$个人得到了第$j$次机会的概率。

    那么${ans=sum_{i=1}^{n}sum_{j=1}^{r}f[i][j]*(1-(1-p_i)^{j})*d_i}$//表示$i$利用到了机会。

    ${f[i][j]=f[i-1][j]*(1-p_{i-1})^{j}+f[i-1][j+1]*(1-(1-p_{i-1})^{j+1})}$//分别表示$i-1$利用了一个机会,$i-1$没有利用到机会。


     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<vector>
     5 #include<cstdlib>
     6 #include<cmath>
     7 #include<cstring>
     8 using namespace std;
     9 #define maxn 1010
    10 #define llg long long 
    11 #define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
    12 llg n,m,a[maxn],T,r;
    13 double f[maxn][maxn],ans,p[maxn],mi[maxn][maxn];
    14 void init()
    15 {
    16     scanf("%lld%lld",&n,&r);
    17     for (llg i=1;i<=n;i++)
    18     {
    19         scanf("%lf %lld",&p[i],&a[i]);
    20         mi[i][1]=1-p[i];
    21         for (llg j=2;j<=r+1;j++) mi[i][j]=mi[i][j-1]*(1-p[i]);
    22     }
    23     for (llg i=0;i<=max(r,n);i++) f[0][i]=f[i][r+1]=0;
    24     f[0][r]=1;
    25     ans=0;
    26 }
    27 
    28 int main()
    29 {
    30     yyj("king");
    31     cin>>T;
    32     for (llg i=0;i<maxn;i++) mi[i][0]=mi[0][i]=1;
    33     while (T--)
    34     {
    35         init();
    36         for (llg i=1;i<=n;i++)
    37             for (llg j=0;j<=r;j++)
    38             {
    39                 f[i][j]=f[i-1][j]*mi[i][j]+f[i-1][j+1]*(1-mi[i][j+1]);
    40                 ans+=f[i-1][j+1]*(1-mi[i][j+1])*a[i];
    41             }
    42         printf("%.10lf
    ",ans);
    43     }
    44     return 0;
    45 }
    本文作者:xrdog 作者博客:http://www.cnblogs.com/Dragon-Light/ 转载请注明出处,侵权必究,保留最终解释权!
  • 相关阅读:
    下一周计划
    strategy模式
    Roc加载模块过程
    博客园开通了
    MO sample中的缓冲冲区的例子很简单的一个例子
    作为一个想成为程序员的人来说
    试试用live writer写博客到博客园
    Tomcat崩溃,无法访问
    The class Form1 can be designed, but is not the first class in the file.
    Exception in thread "Timer0" java.lang.NullPointerException
  • 原文地址:https://www.cnblogs.com/Dragon-Light/p/6393182.html
Copyright © 2020-2023  润新知