zoukankan      html  css  js  c++  java
  • XSY1528

    题意

    有一条直线,你在(0)位置,你要去(h)位置。
    路上有一些不同的位置上有敌人,你要和他战斗,你有(p_i)的概率赢。若你赢,则你可以走过去,否则你会死。还有一些不同的重生点(与敌人位置不同)。你每经过一个重生点有(p_i)的概率插旗。你死亡后你会在最后一个插旗的位置重生,然后该位置的旗子消失。如果没有旗子,则你在(0)位置重生。
    求你走到目的地的期望路程。模({10}^9+7)
    (nleq 100000)

    做法

    (f_i)为走过(i)点后不再回到(i)(i)之前到达终点的概率

    • (i+1)为敌人
      (f_i=f_{i+1} imes p_{i+1})
    • (i+1)为重生点

    [f_i=f_{i+1}+(1-f_{i+1})*p_{i+1}*f_{i+1}+((1-f_{i+1})*p_{i+1})^2*f_{i+1}+...=frac{f_{i+1}}{(1-p_{i+1}*(1-f_{i+1}))} ]

    然后分母可能为(0),所以我们维护(frac{1}{f_i}),令(f_{i}'=frac{1}{f_i}),则(f_i'=(1-p_{i+1}) imes f_{i+1}'+p_{i+1})
    然后贡献的话就是一段路径长( imes)经过这一段的期望次数

  • 相关阅读:
    Server Profiler
    Unit Test with VS.NET
    js解析json字符
    多维数组
    $routeProvider与$stateProvider区别
    post 与get
    gulp配置
    homebrew常用指令
    less.js
    过滤器
  • 原文地址:https://www.cnblogs.com/Grice/p/12676989.html
Copyright © 2011-2022 走看看