TYVJ P1864 守衛者的挑戰 題解

2022-07-17 07:57:09 字數 1923 閱讀 3481

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 1 2

36 44 13 83 63

-1 2 -1 2 1

樣例輸出1

0.300000

樣例輸出2

0.980387

若第三項挑戰成功,如果前兩場中某場勝利,隊員們就有空間來容納得到的地圖殘片,如果挑戰失敗,根本就沒有獲得地圖殘片,不用考慮是否能裝下;若第三項挑戰失敗,如果前兩場有勝利,沒有包來裝地圖殘片,如果前兩場都失敗,不滿足至少挑戰成功次()的要求。因此所求概率就是第三場挑戰獲勝的概率。

對於 100% 的資料,保證0<=k<=2000,0<=n<=200,-1<=ai<=1000,0<=l<=n,0<=pi<=100。

——————————————我是分割線————————————————————————————

題目大意: 

•擂台賽一共有n項挑戰,各項挑戰依次進行。最初有乙個容量為k的包包。

•第i項挑戰有乙個屬性ai,如果ai>=0,表示這次挑戰成功後可以再獲得乙個容量為ai的包包;如果ai=-1,則表示這次挑戰成功後可以得到乙個大小為1 的地圖殘片。

•地圖殘片必須裝在包包裡才能帶出擂台,包包沒有必要全部裝滿,但是隊員們必須把 【獲得的所有的】地圖殘片都帶走(沒有得到的不考慮,只需完成所有n項挑戰後揹包容量足夠容納地圖殘片即可),才能拼出完整的地圖。並且他們至少要挑戰成功l次才能離開擂台。

•已知第i項挑戰成功的概率為pi%。現在,請你幫忙**一下,隊員們能夠帶上他們獲得的地圖殘片離開擂台的概率。

好題一枚

數學期望dp

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11

#define maxn 10001

12#define f(i,j,k) for(int i=j;i<=k;i++)

13#define m(a,b) memset(a,b,sizeof(a))

14#define ff(i,j,k) for(int i=j;i>=k;i--)

15#define inf 0x7fffffff

16#define q 23333333333333333

17using

namespace

std;

18int

read()

21while(ch>='

0'&&ch<='9')

22return x*f;23}

24int a[210

],n,m,t,i,j,k;

25double p[210],f[201][201][401

],ans;

26int

main()

2743

else

47for(j=m;j<=n;j++)

48for(k=0;k<=n;k++)

49 ans+=f[n][j][k+200

];50 cout

51return

0;

52 }

view code

守衛者的挑戰

題目描述 隊員們被傳送到了乙個擂台上,最初身邊有乙個容量為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 的概率。決策...

守衛者的挑戰

開始就想到了用乙個三維的f陣列表示第i場,贏了幾場,還剩下多少空間,但是發現空間的極限最大值是200000,在開乙個三維的陣列就爆記憶體了,後來想到用map實現動態開點,但是這樣時間複雜度過不了,並且還表示不了贏了多少場的狀態,後來參考了一下題解,發現當揹包的空間加到大於n的時候,無論怎麼樣,揹包空...