• 【51NOD1398】等公交


    题面

    小镇的公交车站里有N辆公交,标号为0,1,2,...,N-1。这个小镇的公交运作模式比较奇葩,当必须有一辆车离开车站时,系统会随机从N辆车中选择一辆车,其中任意一辆车i被选中的概率为probi/100,当车i被选中后它会离开车站,并且在之后的timei的时间内完成它的行程并返回车站。然后系统又开始随机选N辆车之一(存在同一辆车被连续多次选中的可能)。这个车站在0时刻发出第一班车。如果你在s时刻到达车站,且一定搭乘下一班车,那么你等待的时间的期望是多少? 

    分析

    很裸的概率dp,其他没啥说的,统计答案这的意思是等待这么长时间的概率*时间

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define N 200020
    int T,n,s,t[N];
    double p[N],dp[N],ans;
    int main()
    {
        scanf("%d",&T);
        while(T--)
        {
            memset(dp,0,sizeof(dp));ans=0;
            scanf("%d%d",&n,&s);
            for(int i=1;i<=n;i++)
                scanf("%d%lf",&t[i],&p[i]),p[i]/=100.0;
            dp[0]=1;
            for(int i=0;i<s;i++)
                for(int j=1;j<=n;j++)
                    dp[i+t[j]]+=dp[i]*p[j];
            for(int i=s+1;i<N;i++)
                ans+=(i-s)*dp[i];
            printf("%.4lf
    ",ans);
        }
        return 0;
  • 相关阅读:
    函数式组件中的class与style处理
    学习CSS(二)
    mysql优化二
    mysql优化一
    spring解决循环依赖
    Java多线程2:Thread中的实例方法
    当try、catch中有return时,finally中的代码会执行么?
    Java多线程1:进程与线程
    手写springmvc
    手写spring
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/9928308.html
Copyright © 2020-2023  润新知