UVA11021 Tribles確率DP

トピックポータル

質問の意味:ウサギは死に毎日生きている$ K $を持つようになった、それぞれの死は、出生$パイの$ $ I $ウサギの確率を持っています。ウサギの確率$メートルの$日の決意が死亡しました。

アイデア: 

  集合$ F [i]が$死のi日における完全なウサギの確率で、その答えは、[M] ^ k個の$ F $です。

  だから、キー[i]は$ F $を求めています。

     合計確率式であった

    $ Fを[I] = P0 + P1 * F [I-1] +のP2 * F [I-1] ^ 2 + ... + PN * F [I-1] ^ n個の$

  それを理解する方法については式?P0は、ウサギの確率は彼が死んだ初日を終えています。p1が原因ウサギの死に、[I-1]その後、この場合の確率は、私が死ぬ日で終了、ウサギのうち、ウサギに生まれた最初のP1 *のFである独立した繰り返し時間なので、指数関数的に確率フォームを掛けました。

 

  

#pragma GCCの最適化(2)
 の#pragma G ++最適化(2)
 の#pragmaコメント(リンカー、 "/ STACK:102400000,102400000")
の#include <ビット/ STDC ++ H> 
の#include <unordered_map>
 の#defineのrep(I、 、B)が(iは= int型、iが<= Bと; ++ i)は、
 の#define DEP(I、B、A)(iはBを= int型のために、I> = A; - I)
 の#define CLR(A 、B)のmemset(A、B、はsizeof(A))
 の#define PB一back
 の#define PII対<整数、整数>
 使用して 名前空間STDを、
typedefの長い 長いLL。
LL RD()
{ 
    LL、X = 0、F = 1CHARCH = GETCHAR()。
    一方、(CH < ' 0 ' || CH> ' 9 '){ 場合(CH == ' - ')、F = - 1 ; CH = GETCHAR();}
     一方(CH> = ' 0 ' && CH <= ' 9 '){X = X * 10 + CH- ' 0 ' ; CH = GETCHAR();}
     戻りのx *のF。
} 
のconst  int型 MAXN = 1010 const  int型 INF = 0x3f3f3f3f;
INTのN、M、K、T。
二重DP [MAXN]、F [MAXN]、P [MAXN]。
INT メイン(){ 
    CIN >> T。
    int型の猫= 1 ;
    一方、(T-- ){ 
        CIN >> N >> K >> M。
        ダブルのres = 0 ; 
        担当者(I、0、N- 1 ){ 
            scanf関数(" %のLF "、&P [I])。
        } 
        [F 1 ] = P [ 0 ]。
        担当者(I、2 、M){ 
            F [i]が= 0 ; 
            担当者(j、0、N- 1 ){ 
                F [I]([I-F + = P [j] * POW 1 ]、J); 
            } 
        } 
        のprintf(" ケース#1%のD:%.7f \ n "、猫++ 、POW(F [M]、K))。
    } 
}

 

おすすめ

転載: www.cnblogs.com/mountaink/p/11448620.html