LightOJ 1027 A Dangerous Maze

来源:互联网 发布:聚类算法matlab代码 编辑:程序博客网 时间:2024/05/29 23:24

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25904


题意:你在一个迷宫中,有n个门,每个门上有一个值x,若x>0,表示x分钟后你会离开这个迷宫;若x<0,表示x分钟后你回到原地。每次选择都是等概论的选n个门中的其中一个,求离开迷宫的选择期望次数。若永远出不来输出inf。



思路:E = 1/n * ( ∑x )(x>0) + 1/n * ( ∑( y + E ) )(y<0回到原点)。E = sum(∑abs(xi))/t t为值为正数的门的个数,若t为0,则答案为inf。


#include <iostream>#include <cstdio>#include <cmath>using namespace std;int T,n;int sum;int gcd(int a,int b){    return b==0?a:gcd(b,a%b);}int main(){    cin>>T;    for( int kase = 1; kase <= T; kase++ )    {        cin>>n;        int temp,t;        t = sum = 0;        for(int i = 1; i <= n; i++)        {            scanf("%d",&temp);            if ( temp > 0 ) t++;            sum+=abs(temp);        }        printf("Case %d: ",kase);        if ( t == 0 )            puts("inf");        else printf("%d/%d\n",sum/gcd(sum,t),t/gcd(sum,t));    }    return 0;}



0 0
原创粉丝点击