P1850 換教室 超長的轉移方程期望dp

2021-10-09 18:32:53 字數 1394 閱讀 8295

換教室

方程不難推…出思路太慢了…

定義d p[

i][j

]dp[i][j]

dp[i][

j]為第i

ii個時間段花費了j

jj次機會的最小路程

但是無法轉移…因為我們不知道上一次在哪個地點

那麼定義dp[

i][j

][0/

1]表示

本次是否

申請換教

室dp[i][j][0/1]表示本次是否申請換教室

dp[i][

j][0

/1]表

示本次是

否申請換

教室但是這樣還是沒有確切知道在哪個地點啊!!

既然是概率期望,就應該知道

對於d p[

i][j

][0]

dp[i][j][0]

dp[i][

j][0

],100

%100\%

100%

在c

ic_i

ci​位置

對於d p[

i][j

][1]

dp[i][j][1]

dp[i][

j][1

],pi

p_ipi

​概率在d

id_i

di​位置,1−p

i1-p_i

1−pi

​概率在d

id_i

di​位置

所以轉移很明了了,列舉本次和上次的狀態,根據概率來轉移即可

#include using namespace std;

const int inf=1e9;

const int maxn=2009;

int n,m,v,e,c[maxn],d[maxn];

double p[maxn],dis[maxn][maxn],ans=1e9,dp[maxn][maxn][2];

void floyd()

for(int k=1;k<=v;k++)

for(int i=1;i<=v;i++)

for(int j=1;j<=v;j++)

dis[i][j]=min( dis[i][j],dis[i][k]+dis[k][j] );

}int main()

dp[i][j][1]=min( q,w );

if( i==n )

ans=min( ans,min(dp[i][j][0],dp[i][j][1]) );

} } if( n==1 ) ans=0;

printf("%.2lf",ans);

}

P1850 換教室 題解

題意 有 v 間教室,教室之間有 e 條雙向邊連線,從乙個教室走到另乙個教室需要一 定時間.有 n 節課,第 i 節課有兩間教室,預設要去第 c i 間教室,可以申請到 第 d i 間教室去,申請通過的概率為 p i 所有申請必須在最開始提交.求出提 交申請個數不超過 m 的情況下,依次上完這 n ...

P1850 換教室 概率dp

其實說是概率dp,本質上和dp沒什麼區別,就是把所有可能轉移的情況全列舉一下就行了,不過dp方程確實有點長。ps 這個題的floyed我竟然之前寫跪了。題目 題目描述 對於剛上大學的牛牛來說,他面臨的第乙個問題是如何根據實際情況申請合適的課程。在可以選擇的課程中,有 2n2n2n 節課程安排在 nn...

P1850 換教室 期望DP

對於剛上大學的牛牛來說,他面臨的第乙個問題是如何根據實際情況申請合適的課程。在可以選擇的課程中,有 2n2n2n 節課程安排在 nnn 個時間段上。在第 iii 1 i n1 leq i leq n1 i n 個時間段上,兩節內容相同的課程同時在不同的地點進行,其中,牛牛預先被安排在教室 cic i...