LightOJ 1027A Dangerous Maze

来源:互联网 发布:安徽自考网络助学加分 编辑:程序博客网 时间:2024/05/30 05:42

题意:

两种门,第一个是出去,第二个是回到原点,每次选择的概率均相同。询问出去需要多少时间。

思路:

假设P是出去所用时间的期望值。

共有n个门,其中n1个是出去的门,n2个是返回原点的门。

sum1是n1个门的时间和, sum2是n2个返回原点的门的时间和。

 P= (1/n) * sum1   (当前步骤下出去的期望) + (1/n) (sum2 + n2p) (当前步骤走回原点)

  解释: 

出去的期望: (1/n)* t1 + (1/n) *t2 +.... (1/n)*tx =(1/n)*sum1

返回原点; 未走出去当前步骤所需时间 (1/n) ty + (1/n)* tz +...= (1/n)*sum2

再加上下一步骤之后 出去的时间  共n2个可能。故为n2*p

#include <iostream>#include <stdio.h>using namespace std;int n;int a[10000];int gcd(int x,int y){    return y==0?x:gcd(y,x%y);}int main(){    int t;    scanf("%d",&t);    for(int cs=1;cs<=t;cs++)    {        printf("Case %d: ",cs);        scanf("%d",&n);        int fg=0;        int sum=0;        int n1=0,n2=0;        for(int i=1;i<=n;i++)        {            scanf("%d",&a[i]);            if(a[i]>0)                sum+=a[i],fg=1,n1++;            else                sum-=a[i],n2++;        }        if(!fg)            printf("inf\n");        else        {            int fenzi=sum;            int fenmu=n-n2;            int tmp=gcd(fenzi,fenmu);            fenzi/=tmp;            fenmu/=tmp;            printf("%d/%d\n",fenzi,fenmu);        }    }    return 0;}

原创粉丝点击