首页 > 其他 > 详细

51nod 1630(定积分 + 期望)

时间:2019-04-29 12:59:19      阅读:170      评论:0      收藏:0      [点我收藏+]

51nod1630

  1. 每个人进入竞技场后,会等概率随机匹配一个人,匹配到的人与当前胜利和失败场数无关。
  2. 胜利达到x场,或失败达到y场后,退出竞技场,根据退出时的胜利场数获得奖励,不能中途放弃。
  3. 水平高的选手,总能战胜水平低的选手,不存在水平相等的人。
  4. 竞技场有无穷多的人。

某人水平在所有人中等概率,等求退出的期望胜利场数。


Solution

?一道妙题。

观察题目,可以发现因为有无穷多的人,所以如果当你的水平确定下来后,胜率的改变可以忽略不计,例如如果有\(n\)个人,那么你\(i\)水平的胜率就是\(\frac{i-1}{n}\)

?如果我们确定了一个胜率,这题则十分的容易在一个dp时间复杂度解决。

然而胜率可以看做是\([0,1]\)区间上的任意小数,根据定积分的思想,我们把区间分成尽量多的段数,然后取平均值作为答案。但这样的时间复杂度与精度不能同时保障。

考虑把dp看做一个多项式,一个关于胜率p的多项式,我们可以在最后把\(p\)带进去,这样时间复杂度可以通过\(n\le 10,m\le 10\)的所有数据。

\(100\%\)的数据下,\(n,m\le 20\),此时我们需要用到定积分的求解公式,像这样:

void Doit(db a[], int win) {
    db sum = 0;
    F(i, 1, a[0])
        sum += a[i] / i;
    Ans = Ans + sum * win;
}

51nod 1630(定积分 + 期望)

原文:https://www.cnblogs.com/Pro-king/p/10789673.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!