LightOJ1265-Island of Survival

本文介绍了一个生存游戏模型,探讨了在特定规则下人存活的概率。游戏包含一定数量的老虎、鹿和一个人,通过数学方法计算当老虎数量为偶数时人能够存活的概率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Island of Survival

 


题意:有一个生存游戏,里面t只老虎,d只鹿,还有一个人,每天都要有两个生物碰面,现在有以下规则
1.老虎和老虎碰面,两只老虎就会同归于尽
2.老虎和人碰面或者和鹿碰面,老虎都会吃掉对方
3.人和鹿碰面,人可以选择吃或者不吃该鹿
4.鹿和鹿碰面,相安无事
问人存活下来的概率
解题思路:人生存下来的条件就是不被老虎吃掉,所以只要所有的老虎都同归于尽了,人就可以生存下来了。如果老虎的数量是奇数,那么人总有一天会被吃掉的,如果老虎的数量是偶数,那就算一下所有老虎同归于尽的概率,这个概率就是人存活下来的概率了。鹿可以忽略不计。在时间无限的情况下,老虎没死光的话,鹿总有一天是会被全部吃掉的
当老虎的数量是偶数是:总情况就是在tiger + 1(老虎和人)里面选两个碰面C(tiger + 1, 2); 两只老虎碰面的情况是C(tiger, 2),所以两只老虎碰面的概率是(tiger - 1) / (tiger + 1)


#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
#include <vector>
#include <set>
#include <bitset>
#include <stack>
#include <map>
#include <climits>
#include <functional>

using namespace std;

#define LL long long
const int INF=0x3f3f3f3f;
const double eps=1e-8;

int main()
{
    int t,cas=1;
    scanf("%d",&t);
    while(t--)
    {
        int x,y;
        scanf("%d %d",&x,&y);
        if(x == 0) printf("Case %d: 1\n",cas++);
        else if(x%2==1) printf("Case %d: 0\n",cas++);
        else
        {
            double ans=1.0;
            while(x)
            {
                ans*=(x-1.0)/(x+1.0);
                x-=2;
            }
            printf("Case %d: %.6f\n",cas++,ans);
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值