zoukankan      html  css  js  c++  java
  • #期望dp#51nod 2015 诺德街

    题目传送门


    分析

    禁不住 QuantAsk 的诱惑(bushi)

    考虑一条路线可以由若干段 (1-2-dots-n-dots-2) 以及 最后一段 (1-dots-x) 组成。

    对于最后一段可以求出它的期望时间设为 (len) ,对于这若干段循环节,可以求出它的概率设为 (P)

    那么最终的期望时间 (ans=P(ans+2n-2)+len)

    也就是有 (P) 的概率会多走 (2n-2) 步,否则期望走 (len) 步终止

    把方程解出来得到 (ans=frac{P(2n-2)+len}{1-P})


    代码

    #include <cstdio>
    #define rr register
    using namespace std;
    const int mod=1000000007;
    int n,A,B,C,len,P=1,p[2000011];
    inline signed ksm(int x,int y){
        rr int ans=1;
        for (;y;y>>=1,x=1ll*x*x%mod)
            if (y&1) ans=1ll*ans*x%mod;
        return ans;
    }
    signed main(){
    	scanf("%d%d%d%d%d",&n,&p[1],&A,&B,&C);
    	for (rr int i=2;i<=n;++i) p[i]=p[n*2-i]=(1ll*A*p[i-1]%mod*p[i-1]+1ll*B*p[i-1]+C)%mod;
    	for (rr int i=1;i<2*n-1;++i){
    		len=(len+(i-1ll)*P%mod*p[i]%mod)%mod;
    		P=(mod-p[i]+1ll)*P%mod;
    	}
    	len=(len+P*(2ll*n-2)%mod)%mod;
    	return !printf("%lld",1ll*len*ksm(mod-P+1,mod-2)%mod);
    } 
    
  • 相关阅读:
    Python3 运算符
    Python之匿名函数
    Python之推导式、生成器表达式
    Python网络编程
    Python单例模式
    Python异常处理及元类
    Python面向对象(三)
    Python面向对象(二)
    Python面向对象(一)
    Python面向对象入门
  • 原文地址:https://www.cnblogs.com/Spare-No-Effort/p/15405350.html
Copyright © 2011-2022 走看看