码迷,mamicode.com
首页 > 其他好文 > 详细

lightoj1027

时间:2018-11-05 12:52:39      阅读:183      评论:0      收藏:0      [点我收藏+]

标签: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 }
View Code

 

lightoj1027

标签:name   \n   std   isp   一点   inf   else   detail   cas   

原文地址:https://www.cnblogs.com/pandaking/p/9908468.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!