洛谷P1850 換教室

2022-06-13 16:12:09 字數 1901 閱讀 1990

對於剛上大學的牛牛來說,他面臨的第乙個問題是如何根據實際情況申請合適的課程。

在可以選擇的課程中,有 \(2n\) 節課程安排在 \(n\) 個時間段上。在第 \(i\)(\(1 \leq i \leq n\))個時間段上,兩節內容相同的課程同時在不同的地點進行,其中,牛牛預先被安排在教室 \(c_i\) 上課,而另一節課程在教室 \(d_i\) 進行。

在不提交任何申請的情況下,學生們需要按時間段的順序依次完成所有的 \(n\) 節安排好的課程。如果學生想更換第 \(i\) 節課程的教室,則需要提出申請。若申請通過,學生就可以在第 \(i\) 個時間段去教室 \(d_i\) 上課,否則仍然在教室 \(c_i\) 上課。

由於更換教室的需求太多,申請不一定能獲得通過。通過計算,牛牛發現申請更換第 \(i\) 節課程的教室時,申請被通過的概率是乙個已知的實數 \(k_i\),並且對於不同課程的申請,被通過的概率是互相獨立的。

學校規定,所有的申請只能在學期開始前一次性提交,並且每個人只能選擇至多 \(m\) 節課程進行申請。這意味著牛牛必須一次性決定是否申請更換每節課的教室,而不能根據某些課程的申請結果來決定其他課程是否申請;牛牛可以申請自己最希望更換教室的 \(m\) 門課程,也可以不用完這 \(m\) 個申請的機會,甚至可以一門課程都不申請。

因為不同的課程可能會被安排在不同的教室進行,所以牛牛需要利用課間時間從一間教室趕到另一間教室。

牛牛所在的大學有 \(v\) 個教室,有 \(e\) 條道路。每條道路連線兩間教室,並且是可以雙向通行的。由於道路的長度和擁堵程度不同,通過不同的道路耗費的體力可能會有所不同。 當第 \(i\)(\(1 \leq i \leq n-1\))節課結束後,牛牛就會從這節課的教室出發,選擇一條耗費體力最少的路徑前往下一節課的教室。

現在牛牛想知道,申請哪幾門課程可以使他因在教室間移動耗費的體力值的總和的期望值最小,請你幫他求出這個最小值。

發現點數不超過 \(300\),所以先 floyd 求出全源最短路徑。

設 \(f[i][j][0/1]\) 表示前 \(i\) 節課,申請了 \(j\) 次,其中第 \(i\) 次是否申請的最小期望體力。

那麼分類討論第 \(i-1\) 節課是否申請,轉移時加上相應距離期望即可。

時間複雜度 \(o(nm+v^3)\)。

#include using namespace std;

const int n=310,m=2010;

int n,m,wyctql,xjqtql,dis[n][n],a[m],b[m];

double ans,p[m],f[m][m][2];

int main()

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

dis[i][i]=0;

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

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

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

if (dis[i][j]>dis[i][k]+dis[k][j])

dis[i][j]=dis[i][k]+dis[k][j];

n=wyctql; m=xjqtql;

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

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

f[i][j][1]=f[i][j][0]=1000000000000.0;

f[1][1][0]=f[1][2][1]=0;

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

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

ans=1000000000000.0;

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

ans=min(ans,min(f[n][i][0],f[n][i][1]));

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

return 0;

}

洛谷P1850 換教室

傳送門啦 這是寫第乙個概率期望dp。一般看見這種題就想暴力了,看一下資料範圍,暴力應該還是挺好想的吧。24分注意到有6個測試點m 0m 0,則說明不能提出申請,那麼只需要求出全圖的兩兩之間的最短路,路徑唯一確定。52分注意到另外有7個測試點m 1m 1,只能提出一次申請。我們可以直接列舉在 提出申請...

洛谷P1850 換教室

心力憔悴。不知道說什麼。方程還是很好推的,我也很快就推出來了。結果 花了4h 重構了幾遍 才終於意識到這樣寫有問題。真是。include include include include using namespace std const int maxn 2e3 20 const int maxm ...

洛谷P1850 題解 換教室

題目戳此 乙個比較毒瘤的dp題。設f i j 1 0 為前i個時段 申請j次 第i個時段申請成功與否 思考下面幾種情況 一 i未申請f i j 0 1 i 1申請 1.i 1申請成功 2.i 1申請失敗 2 i 1未申請 二 i申請f i j 1 1 i 1申請 1.前後均成功 2.前成功後失敗 3...