ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Marbles Lucky Distribution Gym - 101845M --概率、思维、贪心

2021-08-01 14:01:36  阅读:215  来源: 互联网

标签:101845M 概率 Marbles -- 弹珠 瓶子 int 蓝球 ans


题目链接

题目描述
胡安有N个红色弹珠,M个蓝色弹珠,和K个瓶子。他将在K个瓶子中的每个瓶子上放一定数量的弹珠,使得没有瓶子是空的,每个弹珠都在瓶子里。

安德烈是一个圣菲球迷,所以他将以均匀分布的方式随机挑选一个瓶子,然后他将以均匀分布的方式随机挑选瓶子里的弹珠,希望是一个红色弹珠。由于胡安是Millonarios的球迷,他想把瓶子里的弹珠分配到安德烈选到蓝色弹珠的概率最大。胡安的生活很忙碌,因此他需要你的帮助来确定弹珠的最佳排列方式和安德烈得到蓝色弹珠的概率。

Input
输入由三个用空格隔开的整数N M和K(1≤N, M, K≤ 1 0 9 10^{9} 109)-分别是红弹珠、蓝弹珠和瓶子的数量。

Output

打印Bob得到蓝色弹珠的概率,使弹珠排列最优。你的答案将被认为是正确的,如果它的绝对或相对误差不超过 1 0 − 6 10^{-6} 10−6。

Sample Input
50 50 2

Sample Output
0.747474747

题目分析

在每个瓶子里放1个蓝球,如果有剩余的蓝球,就把所有剩余的蓝球放在瓶子1里。
如果还有空瓶子,就把所有红色的瓶子分到空瓶子里。否则,将所有红色的放在1号瓶中。 计算得到蓝色的概率。
一个瓶子里只有蓝球拿到的概率必定是100%,贪心。

#include <bits/stdc++.h>
using namespace std;
#define int long long int
const int inf = 0x3f3f3f3f;
const int N = 5e4 + 7;

signed main() {
    double n, m, k;
    cin >> n >> m >> k;
    double ans;
    if (k > m)
        ans = m / k;
    else
        ans = (k - 1) / k + (m - k + 1) / (n + m - k + 1) / k;
    printf("%.7f", ans);
    return 0;
}

标签:101845M,概率,Marbles,--,弹珠,瓶子,int,蓝球,ans
来源: https://blog.csdn.net/qq_59773176/article/details/119297452

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有