zoukankan      html  css  js  c++  java
  • HDU 4870 Rating (2014 多校联合第一场 J)(概率)

    题意:

    一个人有两个TC的账号,一开始两个账号rating都是0,然后每次它会选择里面rating较小的一个账号去打比赛,每次比赛有p的概率+1分,有1-p的概率-2分,当然如果本身是<=2分的也就还是回到0分。然后问最后其中一个账号到达20分时需要打多少次比赛。

    思路:

    因为每次50分,到达1000分,所以可以看做每次1分,到达20分
    dp[i]表示i到20的数学期望
    那么dp[i] = dp[i+1]*p+dp[i-2]*q+1;
    令t[i] = dp[i+1]-dp[i]
    则t[i] = (t[i+1]*p+t[i-2]*q)
    所以t[i+1] = (t[i]-t[i-2]*q)/p

    代码:

     1 #include <iostream>
     2 #include <stdio.h>
     3 using namespace std;
     4 //t[i]为从i分到i+1分需要的比赛次数期望
     5 int main()
     6 {
     7     double t[21],dp[21];
     8     double p,q,sum;
     9     while(scanf("%lf",&p)!=EOF)
    10     {
    11         sum = 0;
    12         q = 1-p;
    13         t[0] = 1/p;
    14         t[1] = t[0]/p;
    15         t[2] = t[1]/p;
    16         sum =t[0]+t[1]+t[2];
    17         for(int i=3;i<20;i++)
    18         {
    19             t[i]=(t[i-1]-t[i-3]*q)/p;
    20             sum+=t[i];
    21         }
    22         //sum为一个账号达到20分的平均比赛次数
    23         printf("%.6lf
    ",2*sum-t[19]);//按照比赛规则,一个账号到20分的比赛次数=两个账号到20分的次数减去一个账号从19分到二十分的比赛次数
    24     }
    25     return 0;
    26 }
  • 相关阅读:
    MongoDB插入时间不正确的问题
    json 字符串转换成对象,对象转换成json字符串
    sqlServer sa用户登陆失败的解决办法
    基于web工作流开发
    javascript ajax的语法
    收藏和设为首页的方法
    asp.net收藏和设为首页的代码
    设计模式
    设计模式
    设计模式
  • 原文地址:https://www.cnblogs.com/PJQOOO/p/4656694.html
Copyright © 2011-2022 走看看