zoukankan      html  css  js  c++  java
  • Fireworks 期望 + 概率 ICPC2020 上海

    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
    ",min(lans,rans));
        }
    }
    
  • 相关阅读:
    python基础 列表生成式
    docker 基础
    xpath例子
    redis删除以什么开头的key
    redis 关闭持久化
    python爬虫 保存页面
    python爬虫操作cookie
    SQl函数的写法
    加料记录(大屏幕)
    ios 调试
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/14327800.html
Copyright © 2011-2022 走看看