Luogu 1850 換教室 (期望dp)

2022-05-15 18:44:22 字數 1280 閱讀 4872

題意:原題在這

little yu的n個時間段上都有兩節課同時進行,她一開始在dflt[i]教室,想去hope[i]教室,而申請通過概率為k[i],且總共有m次機會可以申請。

已知yu的學校有v個教室,e條道路相互連通(無向圖),每條路有乙個代價。

求:申請哪幾門課程能使yu在教室之間亂跑的體力期望最小

做法:(詳見行內注釋)

1. dp[i][j][k]表示到第i個點,已經更改了j次,k=0這個點不更,k=1這個點更 的最小期望

2. memset不能初始化最大值會**

3. dp轉移方程過於麻煩詳見**注釋

**:

#include#include

#include

#include

#include

#define inf 999999999

#define maxm 305

#define maxn 2005

using

namespace

std;

intn,m,v,e;

double ans=inf;//

一定要是inf,不能是0

int dflt[maxn],hope[maxn];//

原教室和想去的教室

double dp[maxn][maxn][2

],dis[maxm][maxm];

double k[maxn];//

換教室的概率

void

input()

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

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

floyd跑一發兩個教室間的距離

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

for(int j=1;j)

}return;}

intmain()

//memset(dp,inf,sizeof(dp));

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

;

for(int i=2;i<=n;i++)

for(int j=0;(j<=m)&&(j<=i);j++)

}for(int i=0;i<=m;i++)

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

printf(

"%.2lf

",ans);

return0;

}

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換教室的最小數學期望。注意,我們的狀態定義是申請,而不是已經申請成功,這樣...

Luogu P1850換教室(期望DP)

題目鏈結 又一道面向題解程式設計的噁心神題。真是叫人質壁分離 設f i j k 表示考慮了前i節課,嘗試了j次,當前申請結果為k時消耗的體力值。對於f i j 0 有兩種情況 一是我們的主角根本沒去申請換當前課,二是我們的主角嘗試了,但是failed so根據題面有以下幾種情況 1.當前的課不換的情...