AcWing232 守衛者的挑戰(數學 dp)

2022-05-28 16:15:08 字數 698 閱讀 3211

這題很容易想到轉移方程式,問題是我們發現第三維如果開2000,會炸

但是我們進一步發現,沒必要開2000,因為總共就200個任務,所以揹包容量和減少的量的差值最多-200-200

然後平移一下就是0-400.之後就是dfs轉移,另外,double型別不要用memset轉移

#includeusing

namespace

std;

double f[205][205][410

];double p[210

];int a[205

];int

l,n,k;

double dfs(int u,int x,int

k)

if(f[u][x][k]!=-1

)

return

f[u][x][k];

double ans=0

;

if(a[u]!=-1

)

else

return f[u][x][k]=ans;

}int

main()

}for(i=1;i<=n;i++)

for(i=1;i<=n;i++)

printf(

"%.6f\n

",dfs(1,0,n+min(n,k)));

}

view code

數學,DP AcWing 232 守衛者的挑戰

這題看起來不難然而一堆細節。首先不難看出這是乙個類似於揹包的 dp 問題。考慮狀態的設計 f i,j,k 表示當前考慮到第 i 個挑戰,當前揹包剩餘容量為 j 前 i 個挑戰中已經成功了 k 個。那麼我們可以進一步寫出轉移方程 接下來就是細節問題了 約定 v 為地圖殘片的數量。problem 守衛者...

守衛者的挑戰

題目描述 隊員們被傳送到了乙個擂台上,最初身邊有乙個容量為k的包包。擂台賽一共有項挑戰,各項挑戰依次進行。第項挑戰有乙個屬性ai,如果ai 0,表示這次挑戰成功後可以再獲得乙個容量為ai的包包 如果ai 1,則表示這次挑戰成功後可以得到乙個大小為1的地圖殘片。地圖殘片必須裝在包包裡才能帶出擂台,包包...

守衛者的挑戰

初始值為 k 現經過一段數,有 p i 的概率加上第 i 個數 a i 問最後值 geq0 且加了 l 個數的概率。注意到 k 200 都是沒有意義的,於是可以把 k 的範圍視為 0 leq k leq200 直接設 f i j k 表示處理了第 1 i 個數,加了 j 個數,值為 k 的概率。決策...