• LightOJ1027 A Dangerous Maze(期望)


    题目大概说你正在起点,面前有$n$个门,每个门有一个数字$x$,正数表示开这个门$x$分钟后会出去,负数表示开这个门$-x$分钟后会回到起点。选择门的概率是一样的且每次选择互不影响。问出去的时间期望是多少。

    $d[0]$表示从起点出发出去的期望,$d[i](1leqslant ileqslant n)$表示选择第i个门出去的期望;

    不妨设$1dots j$的门是正数,$j+1dots n$的门是负数,那么:

    $$d[i]=x[i](1leqslant ileqslant j)$$

    $$d[i]=x[i]+d[0](j+1leqslant ileqslant n)$$

    由于每个门被选择的概率均等,那么:

    $$d[0]=frac{sum_{i=1}^{j}x[i]+sum_{i=j+1}^{n}(x[i]+d[0])}{n}$$

    $$d[0]=frac{sum_{i=1}^{n}x[i]}{n-j}$$

    这样计算出$d[0]$就是要的结果了。队友教的。

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 int gcd(int a,int b){
     5     if(b==0) return a;
     6     return gcd(b,a%b);
     7 }
     8 int main(){
     9     int t,n,a;
    10     scanf("%d",&t);
    11     for(int cse=1; cse<=t; ++cse){
    12         scanf("%d",&n);
    13         int tot=0,cnt=0;
    14         for(int i=1; i<=n; ++i){
    15             scanf("%d",&a);
    16             if(a<0) tot-=a,++cnt;
    17             else tot+=a;
    18         }
    19         int x=tot,y=n-cnt;
    20         if(y==0) printf("Case %d: inf
    ",cse);
    21         else printf("Case %d: %d/%d
    ",cse,x/gcd(x,y),y/gcd(x,y));
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    ScottGu: 宣布微软 AJAX CDN
    表格数据流协议TDS
    .NET 4 System.Threading.Barrier 类
    企业架构思考
    OpenSSL的托管项目
    WCF服务中操作FormsAuthentication的Cookie
    Silverlight相关博客收集20090927
    Sync Framework 2.0
    [中央电视台·见证]大学堂——兰州大学
    系统进程管理工具Process Explorer
  • 原文地址:https://www.cnblogs.com/WABoss/p/5296560.html
Copyright © 2020-2023  润新知