2019ハング電動マルチ学校第七HDU - 6656 Kejin Player--確率&&期待

問題の意味

$ N $床、$層の支出$のa_iを$の第$ Iのコストの合計は、$ I + 1 $の層に、または$ X_I(1当量\ $ X_I 1 $)$層に$型PI $の可能性があります。そして、回$ Q $の問い合わせがあり、$ L $ $ jは$層の所望のコストにそれぞれの層を問い合わせます。

分析

そのような添加剤が有することが望ましいかもしれない、従って、プレフィックスと$和を維持する[I] $:$ $ 1から$ I $から望ま。

そこ$ I $ $ I + 1 $ $ E $に対する予想価格から提供

$ E = a_iを+(1- \ FRAC {R_iを} {S_I})(和[I] -sum [X_I] + E)$

解得$ E = [s_ia_i +(S_I-R_iを)(和[I] -sum [X_I])] / R_iを$

 

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、

typedefの長い 長いLL。
CONST LL MOD = 1E9 + 7 const  int型 MAXN = 500000 + 10 
LL和[MAXN]。
INTのN、Q。

LL qpow(LLのB LL)
{ 
    LL RET = 1 一方、(b)は、
    { 
        もし、(B&1)RET = RET *%のMOD。= A *%のMOD。
        B >> = 1 
    }
    リターンRET; 
} 
LL INV(LL X)
{ 
    戻り qpow(X、mod- 2 )。
} 

// 第I层到第I + 1层的期望
ボイドのGeTeは(LL iは、LLは、LL Siは、LL AI、LLのXI RI)
{ 
    LL Eは = Siが*%aiをMOD。
    E =(E +(SI - RI)*(SUM [I] -和[XI])%のMOD)。
    E = E *のINV(RI)%のMOD。
    E =(E + MOD)%MOD。
    和[I + 1 ] =(SUM [I] + E)%MOD。
} 

int型のmain()
{ 
    int型のT。
    scanf関数(" %d個"、&T)。
    一方、(T-- 
    { 
        scanf関数(" %d個の%のD "、&​​N、&Q)。
        以下のためにint型 i = 1 ; iが<= N; iは++ 
        { 
            LL RIは、SI、XIは、愛。
            scanf関数(" %LLD%LLD%LLD%LLD "、およびRI、およびSI、&XI、およびAI)。
            Geteの(I、里、SI、AI、XI); 
        } 

        のためにint型 i = 0 ; iは、Q <I ++の
        { 
            int型のL、R。
            scanf関数(" %D%D"&L& R); 
            のprintf(" %LLDする\ n "、(和[R] -和[L] + MOD)%のMOD); 
        } 
    } 
}

 

 

参考リンク:https://blog.csdn.net/mmk27_word/article/details/99472953

おすすめ

転載: www.cnblogs.com/lfri/p/11360441.html