LightOJ 1027 Dangerous Maze

本文介绍了一个经典概率问题:在给定多个门的情况下,选择一个门进行操作,若选择的门对应正值则按该值秒后结束游戏,反之则需等待负值对应的秒数后继续。文章提供了一种算法来计算此情况下的期望时间,并通过具体实现代码进行了说明。

经典概率,主要找递推式。

给你n个门,每次选一个,如果为正x就x秒后结束,否则-x秒后还要留在这里,求期望。

ANS=P_POS*POS_AVERAGE+P_NEG*(NEG_AVERAGE+ANS);

借出Y即可。

#include <iostream>
#include <functional>
#include <algorithm>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <sstream>
#include <utility>
#include <bitset>
#include <cctype>
#include <cstdio>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
using namespace std;

int main()
{
    long long T,ncas=1;
    scanf ("%d",&T);
    while (T--)
    {
        long long n,a[110],sum=0,p1=0,sum_p1=0,p2=0,sum_p2=0;
        scanf ("%lld",&n);
        for (long long i=0;i<n;i++)
        {
            scanf ("%lld",&a[i]);
            if (a[i]>0) {p1++;sum_p1+=a[i];}
            else {p2++;sum_p2+=(-a[i]);}
        }
        long long u,v;
        u=sum_p1+sum_p2;
        v=n-p2;
        if (p1!=0)
        {
            long long mmm=__gcd(u,v);
            printf ("Case %lld: %lld/%lld\n",ncas++,u/mmm,v/mmm);
        }
        else printf ("Case %lld: inf\n",ncas++);
    }
    return 0;
}

转载于:https://www.cnblogs.com/nj-czy/p/5440263.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值