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 = 2005。constの ダブル 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 }