标签:name \n std isp 一点 inf else detail cas
首先,说一下题目的意思,
题意:
你在一个迷宫里,面前有n扇们,每个门有一个数字k;
如果k为正数,则通过这扇门,走k分钟就能出去,
如果为负数,则通过这扇门走-k的分钟回到迷宫;
走每扇门概率一样.问走出迷宫所需时间的期望值;
首先可以确定的一点是如果全是负数,那么肯定是inf了,那么死都走不出了!
然后怎么求期望呢,这是我就傻逼了,我想的公式是这样的 EX=(1/N)(正数之和)+(1/N)(负数之和)+(1/N)*(1/N)(正数之和+负数之和)+...........
然后这样就挂了,你算不出值来: 接下来看了一位大佬的解法,我觉得挺不错的,其实也是我缺乏做这种题的经验
也放一下他的博客:https://blog.csdn.net/yeyeyeguoguo/article/details/46417489
想法他那儿都有:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int t,n,all,ans; 4 int num[150]; 5 6 int gcd(int a,int b){ 7 if(b==0) return a; 8 else return gcd(b,a%b); 9 } 10 11 int main(){ 12 scanf("%d",&t); 13 for(int kase=1;kase<=t;kase++){ 14 scanf("%d",&n); 15 int flag=1; 16 ans=0;all=0; 17 for(int i=1;i<=n;i++){ 18 scanf("%d",&num[i]); 19 if(num[i]>0){ 20 flag=0; 21 all++; 22 } 23 } 24 if(flag) printf("Case %d: inf\n",kase); 25 else{ 26 for(int i=1;i<=n;i++) ans+=abs(num[i]); 27 int t=gcd(ans,all); 28 printf("Case %d: %d/%d\n",kase,ans/t,all/t); 29 } 30 } 31 return 0; 32 }
标签:name \n std isp 一点 inf else detail cas
原文地址:https://www.cnblogs.com/pandaking/p/9908468.html