1395 lightoj確率DP

 

 次のように低いバージョンの問題を解決する方法同様のアプローチにおいて、DP [k]が得られます。

 

 そして、バックステッピングを好きに0からkを

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  のconst  int型 MX = 105 4  二重DP [MX]。
5  INT X [MX]。
6  INT メイン(){
 7      INT T、N、K。
8      のscanf(" %dの"、&T)。
9      INT CAS = 1 ; CAS <= T; CAS ++ ){
 10          のmemset(DP、0はsizeof (DP))。
11          のscanf("%D%D "&N& K);
 12          int型 A = 0 、B;
 13          二重 SUM1 = 0、SUM2 = 0 ;
 14          用のint型 i = 0 ; iがn <; iは++ ){
 15              のscanf(" % D 、およびX [i])と、
 16              であれば(X [i]が> 0){SUM1 + = X [i]は、++ ;}
 17               SUM2 + = ABS(X [I]);
 18          }
 19          であれば(= = 0 ){
 20             printf(" ケース%D:-1 \ nを" 、CAS);
21              続け;
22          }
 図23は、          B = N- 24          であれば(A)SUM1 / = 25          であれば(B)SUM2 / = B。
26          K = 分(K、B)。
27          DP [K] = SUM1 +(BK)* SUM2 / 28          のためには、int型 I = K- 1、I> = 0 ; i-- ){
 29              、DP [I] =(DP [I + 1 ] + SUM2)*(B- I)。
30              DP [I] + = SUM1 *A;
31              DP [I] / = N- I。
32          }
 33          のprintf(" ケース%のD:%.7f \ n "、CAS、DP [ 0 ])。
34      }
 35      リターン 0 36 }

 

おすすめ

転載: www.cnblogs.com/pangbi/p/11613992.html