jzoj 3386 守衛者的挑戰

2021-08-21 10:20:35 字數 2198 閱讀 3349

description

擂台賽一共有n項挑戰,各項挑戰依次進行。第i項挑戰有乙個屬性ai,如果ai>=0,表示這次挑戰成功後可以再獲得乙個容量為ai的包包;如果ai=-1,則表示這次挑戰成功後可以得到乙個大小為1 的地圖殘片。地圖殘片必須裝在包包裡才能帶出擂台,包包沒有必要全部裝滿,但是隊員們必須把 獲得的所有的地圖殘片都帶走(沒有得到的不用考慮,只需要完成所有n項挑戰後揹包容量足夠容納地圖殘片即可),才能拼出完整的地圖。並且他們至少要挑戰成功l次才能離開擂台。

隊員們一籌莫展之時,善良的守衛者nizem幫忙預估出了每項挑戰成功的概率,其中第i項挑戰成功的概率為pi%。現在,請你幫忙**一下,隊員們能夠帶上他們獲得的地圖殘片離開擂台的概率。

input

第一行三個整數n,l,k。

第二行n個實數,第i個實數pi表示第i項挑戰成功的百分比。

第三行n個整數,第i個整數ai表示第i項挑戰的屬性值.

output

乙個整數,表示所求概率,四捨五入保留6 位小數。

solutions

用f[i][j][k]代表參加了i場挑戰贏了j場時有k個空間的概率,最後累加一下

**

var

n,l,k:longint;

v:array [0..201] of longint;

a:array [0..201] of real;

f:array [0..201,0..201,0..201] of real;

ans:real;

procedure

init;

var i:longint;

begin

readln(n,l,k);

for i:=1

to n do

begin

read(a[i]); a[i]:=a[i]/100;

end;

for i:=1

to n do

read(v[i]);

end;

function

min(o,p:longint):longint;

begin

if othen

exit(o);

exit(p);

end;

procedure

qsort

(l,r:longint);

var i,j,mid,t:longint;

begin

if l>r then

exit;

i:=l; j:=r;

mid:=v[(l+r) div

2]; repeat

while v[i]>mid do inc(i);

while v[j]do dec(j);

if i<=j then

begin

t:=v[i]; v[i]:=v[j]; v[j]:=t;

a[0]:=a[i]; a[i]:=a[j]; a[j]:=a[0];

inc(i); dec(j);

end;

until i>j;

qsort(i,r);

qsort(l,j);

end;

procedure

main;

var i,j,kk,t:longint;

begin

f[0,0,min(k,200)]:=1;

for i:=0

to n-1

dofor kk:=0

to i do

for j:=0

to n do

begin

f[i+1,kk,j]:=f[i+1,kk,j]+f[i,kk,j]*(1-a[i+1]);

t:=j+v[i+1];

if t<0

then

continue;

t:=min(t,n);

f[i+1,kk+1,t]:=f[i+1,kk+1,t]+f[i,kk,j]*a[i+1];

end;

ans:=0;

for i:=0

to n do

for j:=l to n do

ans:=ans+f[n,j,i];

write(ans:0:6);

end;

begin

init;

qsort(1,n);

main;

end.

JZOJ3386 守衛者的挑戰

description input 第一行三個整數n,l,k。第二行n個實數,第i個實數pi表示第i項挑戰成功的百分比。第三行n個整數,第i個整數ai表示第i項挑戰的屬性值.output 乙個整數,表示所求概率,四捨五入保留6 位小數。sample input 樣例輸入1 3 1 0 10 20 3...

守衛者的挑戰

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