題目鏈結
題目好長啊,也化簡不了
考慮dp
設\(f[i][j][0/1]\)為從\(1\)到\(i\)交換\(j\)個(不一定成功),當前換或者不換的耗費體力值的總和的期望
先用floyd把任意兩點之間的距離求出
然後進行dp
分當前點選與不選進行分類
具體看注釋
**和注釋如下:
#includeusing namespace std;
const int maxn=2010;
int n,m,v,e;
int ci[maxn],di[maxn];
double p[maxn],tu[500][500],f[maxn][maxn][2];
int main()
for(int k=1;k<=v;k++) for(int i=1;i<=v;i++) for(int j=1;j<=v;j++)
tu[i][j]=min(tu[i][j],tu[i][k]+tu[k][j]);
for(int i=1;i<=n;i++) for(int j=0;j<=m;j++) for(int k=0;k<=1;k++)
f[i][j][k]=0x3f3f3f3f;
f[1][0][0]=0.0;f[1][1][1]=0.0;
for(int i=2;i<=n;i++) for(int j=0;j<=m && j<=i;j++)
}double ans=0x3f3f3f3f;
for(int i=0;i<=m;i++) ans=min(ans,min(f[n][i][0],f[n][i][1]));
printf("%.2lf",ans);
return 0;
}
Luogu P1850換教室(期望DP)
題目鏈結 又一道面向題解程式設計的噁心神題。真是叫人質壁分離 設f i j k 表示考慮了前i節課,嘗試了j次,當前申請結果為k時消耗的體力值。對於f i j 0 有兩種情況 一是我們的主角根本沒去申請換當前課,二是我們的主角嘗試了,但是failed so根據題面有以下幾種情況 1.當前的課不換的情...
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...