【NOIP2016】他の教室で[DPを期待]

https://www.luogu.org/problem/P1850

 

問題を解決するにhttps://www.luogu.org/problemnew/solution/P1850

私はそうではありませんfolydでもありませんよ。

1の#include <cstdioを>
 2の#include <アルゴリズム>
 3の#include <CStringの>
 4  使って 名前空間STDを、
5  のconst  int型 N = 2005constの ダブル INF = 1047483647.00 6  INTのN、M、V、E、C [N]、D [N]。
7  ダブル P [N]、F [N] [N] [ 2 ]。
8  INT [ 305 ] [ 305 ]。
9  INT メイン()
 10  {
 11   のscanf(" %D%D%D%D "、&​​N、&M、&V、&E)。
12   のためにint型 i = 1 ; iが<= N; iが++)のscanf(" %dの"、&C [I])。
13   のためにint型 I = 1のscanf(; iが<= N I ++)は、 " %のD "、&D [I])。
14   のためにint型 i = 1 ; iが<= N; iが++)のscanf(" %のLF "、&P [I])。
15  
16   のmemset(0x3fをはsizeof (a)参照)。
17   INT X、Y、Z。
  int型 i = 1 ; iが= Eを<; Iは++ 19   {scanf関数(" %D%D%D "、およびX&Y、およびZ)。[X] [Y]は[Y] [X] = = 分([X] [Y]、z)を、}
 20   のためのint型 I = 1 ; I <= V; I ++)は[i]は[I] = 0 ;
21  
22   のためにint型のk = 1 ; K <= Vあり、k ++ 23    のためのINT I = 1 ; I <= V; I ++ 24       のためのINT J = 1 ; J <= V; J ++)[I] [J] =分([I] [K] + [K] [j]は、[I] [J])。
25  
26  以下のためにint型 i = 1 ; iが<= N; I ++ 27        のためのINT J = 0 ; J <= Mであり、j ++)F [i]は[J] [ 0 ] = F [I] [J] [ 1 ] = INF。
28  
29   fは[ 1 ] [ 0 ] [ 0 ] fは[= 1 ] [ 1 ] [ 1 ] = 0 30   のためには、int型、I = 2 ; iが<= N; I ++ 31        のためのINT J = 0 ; J <=分(I、M); J ++ 32        {F [I] [J] [ 0 ] =分(F [I- 1 ] [j] [ 0 ] + [C [I- 1 ] [C [I]、[I-F 1 [] J] [ 1 ] + P [I- 1 ] * [D [I- 1 ] [C [I] +(1 -p [I- 1 ])* [C [I- 1 ]] [ C [i]は])。
33  
34          であれば(J> 0)F [i]は[J] [ 1 ] =分(F [I- 1 ] [J- 1 ] [ 0 ] + P [I] * [C [I- 1 ]] [D [i]は] +(1 -p [I])* [C [I- 1 ] [C [I]]は、
 35                                             F [I-1 ] [J- 1 ] [ 1 ] + P [I- 1 ] * P [I] * [D [I- 1 ] [D [I]
 36                                                                +(1 -p [I- 1 ]) * P [i]は* [C [I- 1 ] [Dの[I]
 37                                                               + P [I- 1 ] *(1 -p [I])* [D [I- 1 ] [C [I]
 38                                                                +(1 -p [I- 1 ])*(1 -p [I])* [C [I- 1 ] [C [I]
39                                            )。
40      }
 41  
42        二重 ANS = INF。
43     のためのint型 J = 0 ; J <=分(N、M); J ++)ANS =分(ANS、分(F [N] [j] [ 0 ]、F [N] [J] [ 1 ]) );
44    のprintf(" %の.2f " 、ANS)。
45  リターン 0 ;
46   }

 

おすすめ

転載: www.cnblogs.com/YuXiaoze/p/11455045.html