終於ac了,,好開心啊,,
這道題我第一眼看到時頭很大,因為題幹很長,不過型別很好判斷
概率dp+最短路
首先floyed求出兩兩間的最短路,記為d[i][j]
f[i][j][1/0]表示在第i個時間段,申請了j個教室,1表示通過,
0表示不通過
a[i]表示原來時間段的教室,b[i]表示更換後的教室,c[i]表示申請成功的概率
轉移狀態時,當前時間段是由上乙個時間段申請轉移和不申請轉移
申請又分為申請通過和不通過
於是就有了狀態轉移方程:
f[i][j][0] = min(f[i-1][j][0] + d[a[i-1]][a[i]], f[i-1][j][1] + d[a[i-1]][a[i]] (1 - c[i-1]) + d[b[i-1]][a[i]] c[i-1]);
f[i][j][1] = min(f[i-1][j-1][0] + d[a[i-1]][a[i]] (1.0-c[i]) + d[a[i-1]][b[i]] c[i], f[i-1][j-1][1] + d[a[i-1]][a[i]] (1.0-c[i-1]) (1.0-c[i]) + d[b[i-1]][a[i]] c[i-1] (1.0-c[i]) + d[a[i-1]][b[i]] (1.0-c[i-1]) c[i] + d[b[i-1]][b[i]] c[i-1] c[i]);
附上**
#include#include#include#includeusing namespace std;
const int maxn=2018,maxm=310;
int a[maxn],b[maxn];
double d[maxm][maxm],c[maxn],f[maxn][maxn][2];
int cnt=0;
int n,m,v,e;
void init()
{ for(int i=0;i
洛谷 1850 換教室
有n個時間段,每個時間段有2節課,最多可以換m次課,概率給出 把校園抽象成無向圖,求耗費最小體力值這是一道期望dp,f i j k 表示考慮到第i個教室,換了j次,k為0 1,表示這次是否換 分四種情況,具體見 double的輸入提示符是 lf,不是 llf include include incl...
算進 換教室(期望dp)
acwing 題目位址 洛谷 題目位址 特水的一道題,但是聯賽前是半抄題解過的,今天再做一遍。決策特別明顯 第 i 節課申請換教室或者不申請換教室。根據期望的定義 不申請,則期望消費就是上乙個教室到這乙個教室的路程 如果上一次申請的話,上一次的教室就有兩種可能,就要乘上相應的概率 申請,則期望消費就...
P1850 換教室 題解
題意 有 v 間教室,教室之間有 e 條雙向邊連線,從乙個教室走到另乙個教室需要一 定時間.有 n 節課,第 i 節課有兩間教室,預設要去第 c i 間教室,可以申請到 第 d i 間教室去,申請通過的概率為 p i 所有申請必須在最開始提交.求出提 交申請個數不超過 m 的情況下,依次上完這 n ...