1 / * Iクロックを完了するまでの日数としてDP [I] [j]は、j個のサブシステムの必要を定義し、それは明らかDPである[I] [j]は4つの状態から転送された 2つの P1 = Iは、J /(N * Sを* ) 。3 P2 =(ニッケル)* J /(N * S) 。4つの P3 = I *は(SJ)/(N * S) 。5 P4 =(ニッケル)*(SJ)/(N * S) 。6 が、DPのための[ I] [j]は、この時間は明らかに、I] [j]が0である[DPは、転送できない 7 転位の方法によってこの時点で、DPは、[i] [j]は左に、得ることができますDP転写式[I] [j]は 8 状態4、* / 9の#include <iostreamの> 10の#include <キュー> 11の#include <CStringの> 12で 使用し た名前空間STD; 13であるのtypedef ロング ロングLL; 14 const int型 MAXN = 1E5 +5 ; 15 二重 DP [ 1005 ] [ 1005 ]。 16 のint main()の 17 { 18 int型N、S。 19 一方(CIN >> N >> S) 20 { 21 のmemset(DP、0、はsizeof (DP))。 22 のためには、(int型 I = N; I> = 0 ; i-- ) 23 { 24 のために(INT J = S; J> = 0 ; j-- ) 25 { 26 もし(n iはjは== Sを&& ==)続けます。 27 ダブル P =私は* 1.0 / nと、ダブル Q = J * 1.0 /のS; 28 // coutの<< P <<」「<< Q <<てendl; 29 DP [I] [J] =((1 -p)*(1 -q)*(DP [I + 1 ] [j + 1 ])+(1 -p)* Q×(DP [I + 1 ] [J ])+ P *(1 -q)*(DP [I]、[J + 1 ])+ 1)/(1 -p * Q)。 30 } 31 } 32 のprintf("%.4lf \ n "、DP [ 0 ] [ 0 ]); 33 } 34 リターン 0 ; 35 }