Noip2016 換教室(期望 DP)

2022-03-07 06:58:40 字數 1047 閱讀 2331

這題結合了dp和概率與期望,其實只要稍微知道什麼是期望就可以了,

狀態的構造很關鍵,\(f[i][j][0/1]\)表示已經到第\(i\)個課程,之前用了\(j\)個申請機會,且當前課程是(1)否(0)申請

然後就容易想到轉移方程,

\(f_=min\+dis(c_,c_i),f_+dis(c_,c_i)*(1-p_)+dis(d_,c_i)*p_\}\)

\[f_=min\+dis(c_,c_i)*(1-p_i)+dis(c_,d_i)*p_i,

f_+dis(c_,c_i)*(1-p_)*(1-p_i)+dis(d_,d_i)*p_*p_i+

dis(c_,d_i)*(1-p_)*p_i+dis(d_,c_i)*p_*(1-p_i) \}

\]方程看起來複雜但仔細分析會會發現其實很裸

#include #include #include #define db double

#define n 2010

using namespace std;

int n,m,v,e,c[n],d[n],g[320][320];

db p[n],f[n][n][2],ans;

inline int read()

while(ch>='0'&&ch<='9')

return x*f;

}inline void init()

for(int k=1;k<=v;++k)

for(int i=1;i<=v;++i)

for(int j=1;j<=v;++j)

g[i][j]=min(g[i][j],g[i][k]+g[k][j]);

for(int i=1;i<=v;++i) g[i][i]=0;

}int main() }

ans=1e9;

for(int i=0;i<=m;++i) ans=min(ans,min(f[n][i][0],f[n][i][1]));

printf("%.2lf\n",ans);

return 0;

}

NOIP2016 換教室 期望DP

嗯,noip歷年真題什麼的,到處都有,抓一道就是三四倍經驗題,我就不寫題目描述了23333 偷個懶一定不會被人發現的 事實上,這是我第一次做概率與期望dp的題目,不是很懂套路,然後就想了很久很久,沒什麼太多的頭緒。首先我覺得應該是用f i j 儲存前i個時間段,申請換j次課,期望收穫到的疲勞值。但是...

Noip 2016 換教室 期望DP

期望反映了乙個隨機變數的平均結果,是所有可能結果的概率乘上結果的和。例如對於乙個隨機變數x,1 3機率變為1,1 3機率變為2,1 3機率變為3,則x的期望值為 13 1 1 3 2 13 3 21 3 1 13 2 1 3 3 2期望具有線性性質,我們可以根據加法原理和乘法原理來對期望進行計算 可...

NOIP2016 換教室 期望DP

傳送門 題解 本蒟蒻第一次知道期望是啥意思。很簡單,就是全部概率 價值求和 感覺期望差不多都和dp有關吧 設d p i j 0 1 dp i j 0 1 dp i j 0 1 表示選到第i節課,已經申請了換j節課,其中第i節選 不選的期望。dis用floyd處理一下即可。include includ...