3029 守衛者的挑戰 概率與期望DP

2021-07-10 03:32:19 字數 972 閱讀 2787

三維dp,方程很好寫: 令f

i,j,

k 表示挑戰完前i個,贏了j次,當前收益為k的概率。 則f

i,j,

k=fi

−1,j

−1,k

−si∗

pi+f

i−1,

j,k∗

(1−p

i)我們可以發現,當

k>

n 時這個狀態並沒有什麼意義,因為此時無論之後怎樣裝都不會使

k<

0 ,所以直接把所以

k>

n 的狀態都放到k=

n 的狀態上就好了。

一開始傻了,轉移的時候少轉移了一部分狀態。為了方便寫還是從當前狀態往後轉移比較好啦。

#include

#include

using namespace std;

int n,l,k;

double ans;

double p[201];

double f[201][201][401];

ints[201];

inline int

read()

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

return a*f;

}int main()

for (int i=1;i<=n;i++) s[i]=read();

f[0][0][k+n]=1;

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

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

for (int k=0;k<=n+n+s[i];k++)

for (int j=l;j<=n;j++)

for (int k=n;k<=n+n;k++)

ans+=f[n][j][k];

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

return

0;}

BZOJ3029 守衛者的挑戰 期望DP

time limit 2 sec memory limit 128 mb submit status discuss 的地圖殘片。地圖殘片必須裝在包包裡才能帶出擂台,包包沒有必要全部裝滿,但是隊員們必須把 獲得的所有的 地圖殘片都帶走 沒有得到的不用考慮,只需要完成所有n項挑戰後揹包容量足夠容納地圖...

BZOJ 3029 守衛者的挑戰 期望DP

題目大意 給定n個事件,第i個事件發生的概率為pi,收益為ai,初始收益為k,求n l 0的概率 令f i j k 表示第i個事件進行後已經發生了j個事件且當前受益為k的概率 mb破輸入法打兩行字錯了十多遍 第三維好大 不會爆?實際上第三維大於n就沒有意義了 因為收益大於n時一定不會扣到負數 因此將...

bzoj 3029 守衛者的挑戰 概率dp

有n個位置,每個位置有乙個權值ai,若ai 0則ai必為 1,且有pi的概率獲得這個值。初始值為k。現在問至少獲得了l個值且獲得的值的和不小於0的概率。n 200,l n,ai,k 2000 設f i,j,k 表示到第i個位置,拿了j個值,當前和為k的概率。顯然若當前的值大於n的話就一定可以滿足和不...