LightOJ 1027 A Dangerous Maze 基础概率DP
A Dangerous Maze LightOJ - 1027
有 个门,每个门被选中的概率相等,有些门可以在 时间后带你出去,而另外一些门在 时间后带你重新回到原点。
问出去的期望时间。
设出去的期望时间为 , 分别表示可以出去门的个数与不可出去的门的个数,用集合 来表示可以出去的门, 为所有门的集合, 那么:
代码如下:
#include<iostream>
#include<cstdio>
//#define WINE
using namespace std;
int T,iCase,n1,tot,d,a,n;
int gcd(int a,int b){
if(b==0)return a;
return gcd(b,a%b);
}
int main(){
#ifdef WINE
freopen("data.in","r",stdin);
#endif
scanf("%d",&T);
while(T--){
scanf("%d",&n);
n1=tot=0;
for(int i=1;i<=n;i++){
scanf("%d",&a);
if(a>0)n1++,tot+=a;
else tot+=-a;
}
if(tot>n1)d=gcd(tot,n1);
else d=gcd(n1,tot);
if(n1==0)printf("Case %d: inf\n",++iCase);
else printf("Case %d: %d/%d\n",++iCase,tot/d,n1/d);
}
return 0;
}