1. 程式人生 > >洛谷P1850 換教室 期望dp (沒寫完QAQ

洛谷P1850 換教室 期望dp (沒寫完QAQ

正解:期望dp

解題報告:

哇我發現我期望這塊真的布星,可能在刷了點兒NOIp之後會去搞一波期望dp的題...感覺連基礎都沒有打紮實?基礎概念都布星!

好那先把這題理順了嗷qwq

首先我們看到期望就會想到dp是趴,加上dp也確實很NOIp那就直接往dp的方向想嘛

比較容易想到的狀態就是f[i][j]表示到第i個階段瞭然後已經申請了j次的最小體力,然而在思考轉移方程的時候就會發現如果這麼設的話好像是不會轉移的嗷,因為我們之後的轉移會和你上一次是去的c還是d有關,然後就考慮再加一輪[0/1]表示上次申請了沒有

然後轉移這兒,巨麻煩一點點扣

f[i][j][0]:到第i個階段了申請了j次這次沒申請

既然這次沒申請那i-1狀態肯定也是申請j次,於是可以知道是從f[i][j]轉移來的,這裡簡單

然後有幾種可能呢?

    • 上次沒申請,那就是f[i][j][0],此時的概率是100%(不申請百分百通不過嘛)
    •   那就是f[i][j][0]+dis[c[i-1]][c[i]]
    • 上次申請了,那就是f[i][j][1],此時可能通過可能沒通過
    •   如果通過了+dis[d[i-1]][c[i]]*k[i-1] 沒通過+dis[c[i-1]][c[i]]*(1-k[i-1])
    •   總結起來就是f[i][j][1]+dis[d[i-1]][c[i]]*k[i-1]+dis[c[i-1]][c[i]]*(1-k[i-1])

f[i][j][1]:到第i個階段了申請了j次這次申請了

理由同上,可以知道是從f[i][j-1]轉移來的

這個就會比較長了...

    • 上次沒申請,f[i][j-1][0],這時有倆可能,如果這次申請通過了,...放學了先回去遼回來再補QAQ
    • 上次申請了
    • 備用