Noip 2016 換教室 期望DP

2021-08-10 04:57:30 字數 1484 閱讀 8630

期望反映了乙個隨機變數的平均結果,是所有可能結果的概率乘上結果的和。例如對於乙個隨機變數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期望具有線性性質,我們可以根據加法原理和乘法原理來對期望進行計算

可以發現,最終方案是某種決策集合,而決策是沒有概率的,所以每個狀態應該取乙個最優決策的期望消費,而不是各種決策搞一下期望和什麼的,期望體力是確定的,能使期望體力不同是決策不同的原因

就是。。。乙個狀態只能由前面階段的乙個狀態轉移過來,因為乙個人不能同時處於兩種狀態,最終方案是每個決斷取了乙個決策構成的集合設f

(i,j

,0/1

) f(i

,j,0

/1

)表示到了第i節課,申請j次,第i節課是否申請的最小體力期望(申請需要一次提交)

那麼轉移就要在多重情況中取最優的,分別為:

i不申請,i-1申請成功

i不申請,i-1申請失敗

i申請成功,i-1申請成功

i申請成功,i-1申請失敗

i申請失敗,i-1申請成功

i申請失敗,i-1申請失敗

不提交任何申請

具體的轉移方程看**吧。。。

#include 

#include

#include

#include

using

namespace

std;

#define debug(x) cerr << #x << "=" << x << endl;

const

int maxn = 2000 + 10;

int n,m,v,e,c[maxn],d[maxn];

double g[310][310],k[maxn],f[maxn][maxn][2],ans = 1e30;

void floyed()

void solve()

}int main()

for(int i=0; i<=n; i++)

for(int j=0; j<=m; j++)

f[i][j][0] = f[i][j][1] = 1e30;

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

floyed();

f[1][0][0] = 0;

f[1][1][1] = 0;

solve();

ans = 1e30;

for(int i=0; i<=m; i++)

ans = min(ans, min(f[n][i][0], f[n][i][1]));

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

return

0;}

NOIP2016 換教室 期望DP

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

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...

noip2016換教室(期望dp

整體思路 這節課換了教室的期望路程 min 上節課換了教室的期望路程 上節課教室到這節課教室的期望路程,上節課沒換教室的期望路程 上節課教室到這節課教室的期望路程 這節課沒換教室的期望路程 min 上節課換了教室的期望路程 上節課教室到這節課教室的期望路程,上節課沒換教室的期望路程 上節課教室到這節...