給定圖上一條路徑(n個點),可以將這條路徑上的乙個點(ci)修改為另乙個指定點(di)(最多修改點數不能超過m),每乙個點被成功修改的概率為ki,求出路徑長度的最小期望值。
因為要求最小期望值,所以兩個點的距離只保留最小的一定最優。要實現這個目的做一遍最短路即可。
再思考乙個問題: 假設已經知道修改m個點,怎麼確定最優方案?不難想到列舉第m個點的位置pos,在[1,pos-1]中尋找m-1個點的最小期望值,再利用概率論的知識求解。同理,m-1個點的最小期望值也可以這樣求。
然後想到dp,前兩維根據分析推出是pos和m,第三維考慮如何根據前面的狀態值求解:我們在得到pos-1的最小期望值時,還需要知道從pos-1到pos的距離才可以得到pos的最小期望值,但是pos-1我們不知道是否修改過,也就無法直接求出pos-1到pos的距離,那麼很明顯,第三維就是表示第pos個點是否申請修改(不一定是成功修改了),如何求期望呢?就利用每乙個事件發生的概率×每乙個事件發生的結果的和即可。(即pos和pos-1的是否成功修改情況和這種情況下對應的結果)
#includeusing namespace std;
const int maxv=305,maxn=2005;
typedef double db;
#define dbmax 1.9*1e9
int dis[maxv][maxv];
int dis[maxn][5];//專門儲存從i-1到i的距離 根據c和d不同有四種情況
int n,m,v,e;
int c[maxn],d[maxn];
double k[maxn],f[maxn][maxn][2];
double fmin(double a,double b){
if(a恩…轉移方程推理過程有空再貼吧(不會
換教室(動態規劃 floyed)
終於ac了,好開心啊,這道題我第一眼看到時頭很大,因為題幹很長,不過型別很好判斷 概率dp 最短路 首先floyed求出兩兩間的最短路,記為d i j f i j 1 0 表示在第i個時間段,申請了j個教室,1表示通過,0表示不通過 a i 表示原來時間段的教室,b i 表示更換後的教室,c i 表...
洛谷 1850 換教室
有n個時間段,每個時間段有2節課,最多可以換m次課,概率給出 把校園抽象成無向圖,求耗費最小體力值這是一道期望dp,f i j k 表示考慮到第i個教室,換了j次,k為0 1,表示這次是否換 分四種情況,具體見 double的輸入提示符是 lf,不是 llf include include incl...
算進 換教室(期望dp)
acwing 題目位址 洛谷 題目位址 特水的一道題,但是聯賽前是半抄題解過的,今天再做一遍。決策特別明顯 第 i 節課申請換教室或者不申請換教室。根據期望的定義 不申請,則期望消費就是上乙個教室到這乙個教室的路程 如果上一次申請的話,上一次的教室就有兩種可能,就要乘上相應的概率 申請,則期望消費就...