首页 > 其他 > 详细

Fireworks 期望 + 概率 ICPC2020 上海

时间:2021-01-25 23:31:48      阅读:53      评论:0      收藏:0      [点我收藏+]

Fireworks 期望 + 概率

题目大意:

制作一个火焰花费 n 分钟,这个火焰是完美的概率是 \(p\) ,点亮所有制作的火焰花费的时间是 m 分钟,问成功点亮一个完美火焰的最短时间是多少。

题解:

这个题目其实不是很难,但是我不会写,对我来说真的好难啊,我真的一点也不会期望概率,需要好好补一下。

花费 \(x\) 次制作一个完美的火焰的概率是:\(\frac{1}{1-(1-p)^{x}}\) ,花费的时间是:\(\frac{n*x+m}{1-(1-p)^{x}}\) ,这个可用三分解决。

这个题目,我又wa了很多发,原因是我在 f 函数里面的 n*x,没有在前面乘以1.0

以后碰到要乘以1.0 或者是1ll 的一定要在开头乘!!!!

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define inf64 0x3f3f3f3f3f3f3f3f
using namespace std;
const int maxn = 5e5+10;
typedef long long ll;
const double EPS = 1e-9;
int n,m,P;
double q;
double f(int x){
    return (1.0*n*x+1.0*m)/(1.0-pow(q,x));
}
int main() {
    int t;
    scanf("%d", &t);
    while (t--) {
        scanf("%d%d%d",&n,&m,&P);
        q =1 - P*0.0001;
        ll l = 1,r = 1e9;
        double lans = f(l),rans = f(r);
        while(l < r) {
            ll lmid = l + (r - l) / 3;
            ll rmid = r - (r - l) / 3;
            lans = f(lmid),rans = f(rmid);
            // 求凹函数的极小值
            if(lans <= rans) r = rmid - 1;
            else l = lmid + 1;
        }
        printf("%.10f\n",min(lans,rans));
    }
}

Fireworks 期望 + 概率 ICPC2020 上海

原文:https://www.cnblogs.com/EchoZQN/p/14327800.html

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