用dp[i][j][0/1]表示到第i節課、申請了j次,第i節課是否申請的最小體力和。
然後分別從dp[i-1][j][0]、dp[i-1][j][1],dp[i-1][j-1][0]、dp[i-1][j-1][1]瘋狂轉移過來。
先跑一邊floyd求最短路。
注意double無法用memset初始化。
具體看**吧。
比較易懂。
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11 #include12 #include13 #include14
using
namespace
std;
15int dis[305][305],n,m,v,e,c[2005],d[2005
];16
double dp[2005][2005][2],k[2005],ans=1000000;17
intmain()
1824}25
for(int i=1;i<=v;i++) dis[i][i]=0;26
for(int i=1;i<=n;i++) cin>>c[i];
27for(int i=1;i<=n;i++) cin>>d[i];
28for(int i=1;i<=n;i++) cin>>k[i];
29for(int i=1;i<=e;i++)
35for(int kk=1;kk<=v;kk++)40}
41}42for(int i=1;i<=n;i++)46}
47 dp[1][0][0]=dp[1][1][1]=0;48
for(int i=2;i<=n;i++)54}
55for(int i=0;i<=min(n,m);i++)
58 printf("
%.2lf
",ans);
59return0;
60 }
//noip2016提高組 day1 t3
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換教室的最小數學期望。注意,我們的狀態定義是申請,而不是已經申請成功,這樣...
洛谷P1850 換教室
傳送門啦 這是寫第乙個概率期望dp。一般看見這種題就想暴力了,看一下資料範圍,暴力應該還是挺好想的吧。24分注意到有6個測試點m 0m 0,則說明不能提出申請,那麼只需要求出全圖的兩兩之間的最短路,路徑唯一確定。52分注意到另外有7個測試點m 1m 1,只能提出一次申請。我們可以直接列舉在 提出申請...