[LOJ 1027] Dangerous Maze

A - A Dangerous Maze

Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu

Submit Status

Description

You are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all doors.

If you choose the ith door, it can either take you back to the same position where you begun in xi minutes, or can take you out of the maze after xi minutes. If you come back to the same position, you can‘t remember anything. So, every time you come to the beginning position, you have no past experience.

Now you want to find the expected time to get out of the maze.

Input

Input starts with an integer T (≤ 100), denoting the number of test cases.

Each case contains a blank line and an integer n (1 ≤ n ≤ 100) denoting the number of doors. The next line contains n space separated integers. If the ith integer (xi) is positive, you can assume that the ith door will take you out of maze after xi minutes. If it‘s negative, then the ith door will take you back to the beginning position after abs(xi) minutes. You can safely assume that 1 ≤ abs(xi) ≤ 10000.

Output

For each case, print the case number and the expected time to get out of the maze. If it‘s impossible to get out of the maze, print ‘inf‘. Print the result in p/q format. Where p is the numerator of the result and q is the denominator of the result and they are relatively prime. See the samples for details.

Sample Input

3

1

1

2

-10 -3

3

3 -6 -9

Sample Output

Case 1: 1/1

Case 2: inf

Case 3: 18/1

貌似是第一道关于期望和概率的题,唉、弱

分析:设出去的时间期望等于\(E\),出去分为两种情况:
A. 一次就出去了,则\(P1=n1/n\),\(n1\)表示正数的个数,平均时间\(T1=SUM(ai)/n1\),\(ai\)为正数;
B. 第一次没出去,则\(P2=n2/n\),\(n2\)表示负数的个数,平均时间为回到起点的平均时间+
从起点出去的平均时间,前者\(T2=SUM(ai)/n2\),\(ai\)为负数,后者即为\(E\);
综上:\(E=P1*T1+P2*(T2+E)\)
解得:\(E=(P1*T1+P2*T2)/(1-P2)\)

#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
using namespace std;
#define N 110

int main()
{
    int T,iCase=1;
    int n,n1,n2;
    int sum1,sum2;
    scanf("%d",&T);
    while(T--)
    {
        n1=n2=0;
        sum1=sum2=0;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            int x;
            scanf("%d",&x);
            if(x>0)
            {
                n1++;
                sum1+=x;
            }
            else
            {
                n2++;
                sum2-=x;
            }
        }
        int k1=sum1+sum2;
        int k2=n-n2;
        int k=__gcd(k1,k2);
        printf("Case %d: ",iCase++);
        if(k2==0)
            printf("inf\n");
        else
            printf("%d/%d\n",k1/k,k2/k);
    }
    return 0;
}
时间: 2024-10-05 16:22:17

[LOJ 1027] Dangerous Maze的相关文章

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 <cs

light OJ 1027 A Dangerous Maze (期望)

1027 - A Dangerous Maze PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB You are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all

[LightOJ 1027] A Dangerous Maze

A Dangerous Maze You are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all doors. If you choose the ith door, it can either take you back to the same positio

lightoj-1027 - A Dangerous Maze(数学期望)

1027 - A Dangerous Maze PDF (English) Statistics ForumTime Limit: 2 second(s) Memory Limit: 32 MBYou are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all do

(期望)A Dangerous Maze(Light OJ 1027)

http://www.lightoj.com/volume_showproblem.php?problem=1027 You are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all doors. If you choose the ith door, it ca

Light OJ 1027 - A Dangerous Maze (数学-期望)

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1027 题目大意: 一个迷宫, 有n个门,选择一个门花费为|ai|, 如果选择的门是正数, 那么直接走出迷宫, 否则重新回到起始位置.选择每一道门的概率是一样的.求走出迷宫的花费的期望. 解题思路:n个门中正数的门有s个, 那么一次选择出去的概率为s/n, 那么出去需要次数的期望为n/s. 对于每一次选择, 需要花费的平均时间为sum(|ai|)/n, 那么走出迷宫的花费的期望

LightOj 1027 A Dangerous Maze【概率】

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1027 题意: 你面前有n个门,每个对应一个数字,若为正xi,代表xi分钟后你会从它走出迷宫,负数则说明你会在-xi分钟后回到出发点且失去记忆.求出去的时间的期望. 代码: #include <iostream> #include <stdio.h> #include <math.h> #include <string> #include

LightOJ - 1027 A Dangerous Maze 概率

题目大意:迷宫里面有n扇门,每扇门有相应的值,假设第i扇门的值为xi,如果xi > 0,那么xi分钟后,走该扇门就可以走出迷宫了,如果xi < 0,表示走了该扇门之后,需要abs(xi)分钟后才能回到原点,问走出迷宫的期望是多少 解题思路:假设有k扇门(正值用x表示,负值用y表示)期望是d的话 那么d = 1 / k * (x1 + x2 + x3 + .. xn) + 1 / k * (abs(y1) + abs((y2) + - + abs(ym) + m * d) 表示有1/k的概率选到

Light OJ 1027 - A Dangerous Maze(概率)

题目大意: 你在一个迷宫里,你面前有n个门,你选择门的概率是一样的,每扇门有一个数字k, 加入这个数字是负数,那么这个门会花费你abs(k)分钟后把你带回原点, 假如这个数字是正数,他可以把你带出迷宫,并且花费时间是k. 问把你带出迷宫的预计期望时间是多少?如果无解输出 “inf”,输出结果要求是最简分数的形式. #include<cstdio> #include<cstring> #include<iostream> #include<algorithm>