三維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的話就一定可以滿足和不...