解題思路:
注意到輸贏與挑戰順序無關,所以我們可以先把能加的揹包加了,看是否夠裝得到的碎片即可。
所以設f[i][j][k]表示挑戰了i關,贏了j場,揹包剩餘容積為k的概率,注意到k最多為n就夠了,而照著先揹包後碎片的順序,只要k<0該狀態即停止轉移。
分輸贏轉移即可。
#include
#define ll long long
using
namespace
std;
int getint()
const
int n=205;
int n,l,k;
struct node
}a[n];
double ans,f[n][n][n];
int main()
for(int i=l;i<=n;i++)
for(int j=0;j<=n;j++)
ans+=f[n][i][j];
printf("%0.6f",ans);
}
TYVJ P1864 守衛者的挑戰 題解
p1864 poetize i 守衛者的挑戰 第一行三個整數n,l,k。第二行n個實數,第i個實數pi表示第i項挑戰成功的百分比。第三行n個整數,第i個整數ai表示第i項挑戰的屬性值.乙個整數,表示所求概率,四捨五入保留6 位小數。樣例輸入1 3 1 0 10 20 30 1 1 2 樣例輸入2 5...
守衛者的挑戰
題目描述 隊員們被傳送到了乙個擂台上,最初身邊有乙個容量為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 的概率。決策...