题意:有n头老虎,m只鹿,还有你,当老虎碰到老虎时,两只老虎都会挂,当老虎碰到其他生物时,其他生物都会挂,人碰到鹿可以选择杀死鹿,也可以放过他,鹿碰到鹿什么也不发生,问你存活到没有老虎可以杀死你的概率最大为多少。
在这里我们发现鹿是无威胁生物,所以我们可以不用管它,当没有老虎时人一定可以活到最后,老虎死亡是成双的,如果老虎的数量为奇数,则不可能所有老虎都会死亡,所以人必然会被老虎杀死。当老虎数量为偶数时,我们应让老虎都是碰到老虎,我概率不太好,不会正面算,我用的是1-P(人碰到老虎)算得,得到P(老虎碰老虎)=1-C(n,1)*C(1,1)/C(n+1,2)=1-1/(n+1)=(n-1)/(n+1)
#include<iostream>
#include<algorithm>
#include<iomanip>
using namespace std;
int main() {
ios::sync_with_stdio(false);
int t;
cin >> t;
for (int k = 1; k <= t; k++) {
int m, n;
cin >> n >> m;
double ans = 1.0;
if (n == 0) {
ans = 1.0;
}else if (n & 1) {
ans = 0;
}
else {
ans = 1.0;
while (n) {
ans *= 1.0 * (1.0 * n - 1) / (1.0 * n + 1);
n -= 2;
}
}
printf("Case %d: %lf\n", k,ans);
}
}