題意:原題在這
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.當前的課不換的情...