Problem Description
Alice 和 Bob 在玩游戏。
桌面上有两堆金币,少的那堆有 x 个金币,多的那堆有 2x 个金币。
假设金币可以被无限细分。Alice 和 Bob 事先都不知道 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;
}
网友评论