解題報告 概率DP入門 P1850 換教室

2022-07-31 03:21:11 字數 850 閱讀 7452

這道題是一道非常基本的期望的題目,我們只需要抓住關鍵,就是我們遞推直接進行dp就可以了,至於我們的最短路部分,因為資料並不是非常的大,所以說我們直接使用弗洛伊德演算法即可。然後根據期望的定義,我們使用期望等於概率乘上價值進行計算即可,然後使用刷表法每次判最小進行遞推即可。

本人ac**:

#includeusing namespace std;

const int n=2e3+5;

const double inf=0x7fffffff;

int n,m,v,e,c[n],d[n],mp[305][305];

double k[n],dp[n][n][2];

void init()

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

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

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

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

for(int i=1;i<=v;++i) mp[i][i]=mp[i][0]=mp[0][i]=0;

for(int i=0;i<=n;++i) for(int j=0;j<=m;++j) dp[i][j][0]=dp[i][j][1]=inf;

dp[1][0][0]=dp[1][1][1]=0;

}int main()

}double ans=inf;

for(int i=0;i<=m;++i)ans=min(ans,min(dp[n][i][0],dp[n][i][1]));

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

return 0;

}

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...

P1850 換教室 dp 期望

流下了不會概率的眼淚,由於不會概率,轉移少寫了點東西。這個dp很簡單,就是乙個普通的線性dp加點期望。剛開始寫這道題時信筆寫下 dp 0 1 i j 表示到第 i 個時間段時,已經申請了換 j 門課程的教室,當前申請0不換 1換教室的最小數學期望。注意,我們的狀態定義是申請,而不是已經申請成功,這樣...