期望 Dangerous Maze

本文详细解析了一种迷宫逃脱算法,通过计算不同门的选择概率和时间期望,得出逃离迷宫所需时间的数学模型。文章提供了算法的具体实现代码,包括概率计算、时间期望求解及最简分数表达。

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

题意:

迷宫里有n个门,每个门有值w[ i ],当值为正,意味着花费w[ i ]个时间能出迷宫,当w[ i ] 为负,意味着花费w [ i ] 个时间返回原点,并丧失记忆,问出迷宫的时间期望E,输出格式为p/q,如果无法出迷宫,则输出inf

选择出迷宫的门的时间期望为  X1*T1(X1为选择出迷宫门的概率,T1为出迷宫门的平均时间)

选择返回原点的门的时间期望为   X2*(T2+E)  (X2为选择返回原地的概率,T2为返回原地的平均时间,E为出迷宫的时间期望)

E=X1*T1+X2*(T2+E);

根据题意自己化简正好得

E=sum/(n-x2)  (sum为所有门绝对值时间总和,x2为返回原点门的个数)

化简用gcd

代码:

#include<stdio.h>
#include<algorithm>
#include<string.h>
#define ll long long
using namespace std;
int gcd(int a,int b)
{
    return b==0?a:gcd(b,a%b);
};
int main()
{
    int t,n,m;
    scanf("%d",&t);
    int op=0;
    while(t--)
    {
        int x1=0,x2=0,t1=0,t2=0;
        scanf("%d",&n);
        for(int i=0; i<n; i++)
        {
            scanf("%d",&m);
            if(m>0)
            {
                x1++;
                t1+=m;
            }
            if(m<0)
            {
                x2++;
                t2+=-m;
            }
        }
        int tmp=gcd(t1+t2,n-x2);
        if(x2==n)
            printf("Case %d: inf\n",++op);
        else
            printf("Case %d: %d/%d\n",++op,(t1+t2)/tmp,(n-x2)/tmp);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值