zoukankan      html  css  js  c++  java
  • [ICPC2020南京F] Fireworks

    [ICPC2020南京F] Fireworks - 期望,三分

    Description

    你每做一个烟花要n分钟,释放已做好的所有烟花需要m分钟,每只烟花成功释放的概率为p。问你在采取最优策略的前提下,直到成功释放第一个烟花时最小的期望时间花费。

    Solution

    每轮的时间开销,乘上至少成功释放一个烟花的时间期望(几何级数),得到得期望时间花费,由于是单峰的三分即可

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    int n, m;
    int p;
    
    double qpow(double p, int q)
    {
        return (q & 1 ? p : 1) * (q ? qpow(p * p, q / 2) : 1);
    }
    
    double f(int k)
    {
        return (1.0 * k * n + m) / (1.0 - qpow(1 - p * 0.0001, k));
    }
    
    void solve()
    {
        cin >> n >> m >> p;
        double l = 1, r = 1e9;
        while (r - l > 3)
        {
            int mid_l = (2 * l + r) / 3;
            int mid_r = (l + 2 * r) / 3;
            mid_l = max(mid_l, 1ll);
            mid_r = max(mid_r, 1ll);
            if (f(mid_l) < f(mid_r))
                r = mid_r;
            else
                l = mid_l;
        }
        double min_ans = 1e18;
        for (int i = 1; i <= 12; i++)
        {
            int mid = i + l - 6;
            mid = max(mid, 1ll);
            min_ans = min(min_ans, f(mid));
        }
        cout << fixed << setprecision(10) << min_ans << endl;
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
        int t;
        cin >> t;
        while (t--)
        {
            solve();
        }
    }
    
  • 相关阅读:
    快速排序模板
    C++面试题目汇总
    二叉树两个节点的最大路径
    vim中操作的快捷键
    剑指offer 顺时针打印矩阵
    剑指offer 判断一棵树是不是另一棵树的子结构
    poi导出excel表
    java 获取服务器(ftp)指定文件夹内的文件
    部署web应用
    tomcat 的目录结构及修改端口号
  • 原文地址:https://www.cnblogs.com/mollnn/p/14587101.html
Copyright © 2011-2022 走看看