這題結合了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...