light OJ 1027 A Dangerous Maze (期望)

1027 – A Dangerous Maze

Time Limit:2 second(s)Memory Limit:32 MB

You are in a maze; seeingndoors 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 theithdoor, it can either take you back to the same position where you begun inximinutes, or can take you out of the maze afterximinutes. 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 integerT (≤ 100), denoting the number of test cases.

Each case contains a blank line and an integern (1 ≤ n ≤ 100)denoting the number of doors. The next line containsnspace separated integers. If theithinteger(xi)is positive, you can assume that theithdoor will take you out of maze afterximinutes. If it’s negative, then theithdoor will take you back to the beginning position afterabs(xi)minutes. You can safely assume that1 ≤ 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 inp/qformat. Wherepis the numerator of the result andqis the denominator of the result and they are relatively prime. See the samples for details.

Sample InputOutput for Sample Input

3

1

1

2

-10 -3

3

3 -6 -9

Case 1: 1/1

Case 2: inf

Case 3: 18/1

从起点出发逃出去的期望,出发有两种情况,出去的时间是p正*(平均出去的时间),,回到起点的情况,p负*(fabs(负数的平均值)+起点的期望)

所以就是 E=p正*(平均出去的时间)+p负*(fabs(负数的平均值)+E)

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<stack>#include<vector>#include<set>#include<map>#define L(x) (x<<1)#define R(x) (x<<1|1)#define MID(x,y) ((x+y)>>1)#define eps 1e-8//typedef __int64 ll;#define fre(i,a,b) for(i = a; i <b; i++)#define free(i,b,a) for(i = b; i >= a;i–)#define mem(t, v) memset ((t) , v, sizeof(t))#define ssf(n)scanf("%s", n)#define sf(n)scanf("%d", &n)#define sff(a,b) scanf("%d %d", &a, &b)#define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)#define pfprintf#define bugpf("Hi\n")using namespace std;#define INF 0x3f3f3f3f#define N 105int a[N];int b,s;int main(){int i,j,t,ca=0,n;sf(t);while(t–){s=b=0;int time_b=0,time_s=0;int x;sf(n);fre(i,0,n){sf(x);if(x>0) {b++; time_b+=x;}else {s++;time_s+=-x;}}if(b==0) {pf("Case %d: inf\n",++ca);continue; }int up=time_b+time_s;int down=b;int s=__gcd(up,down);pf("Case %d: %d/%d\n",++ca,up/s,down/s);} return 0;}

就是去做你害怕的事,直到你获得成功的经验。

light OJ 1027 A Dangerous Maze (期望)

相关文章:

你感兴趣的文章:

标签云: