美文网首页
2020百度之星初赛三Game/C++解法

2020百度之星初赛三Game/C++解法

作者: gudu12306 | 来源:发表于2020-08-04 09:19 被阅读0次

Problem Description

AliceBob 在玩游戏。

桌面上有两堆金币,少的那堆有 x 个金币,多的那堆有 2x 个金币。

假设金币可以被无限细分。AliceBob 事先都不知道 x 是几,但是他们都知道 x 是一个 (0,1] 之间均匀分布的随机实数。

Alice 会等概率的被分配到其中的一堆金币,Bob 会得到另一堆。x 的值和两堆金币的分配是相互独立的。

拿到金币以后,Alice 会马上数清自己拿到多少金币。然后 Alice 可以选择是否和 Bob 那堆换。

给定 Alice 拿到的金币数目,请问 Alice 要不要交换,使得她期望能得到的金币数目更多?

如果交换期望得到的金币数目多于不交换期望得到的金币数目,输出交换,否则不交换。

Input

第一行一个正整数 test (1≤test≤200000) 表示数据组数。
接下来每行一个小数 p (0<p≤2),p 最多保留五位小数,表示 Alice 拿到的金币数目。

Output

对于每组数据,输出 Yes 表示需要交换,输出 No 表示不要交换。

Sample Input

1
1.00000

Sample Output

Yes

分析

大于1则可以肯定是2x,小于1交换之后变大和变小概率都为0.5,但是变大之后p值金币数更多则期望更大。

C++代码

#include<iostream>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        double p;
        cin>>p;
        p<=1?cout<<"Yes"<<endl:cout<<"No"<<endl;
    }
    return 0;
}

相关文章

网友评论

      本文标题:2020百度之星初赛三Game/C++解法

      本文链接:https://www.haomeiwen.com/subject/ykvirktx.html