Atcoder Educational DP Contest I - Coins
Xem dạng PDFCho ~N~ là một số nguyên dương lẻ.
Có tất cả ~N~ đồng xu được đánh số ~1,2,...,N~. Xác suất để đồng xu thứ ~i~ ~(1 \leq i \leq N)~ lật mặt ngửa khi được tung lên là ~p_{i}~ và xác suất để nó lật mặt sấp khi được tung lên là ~1-p_{i}~.
Taro sẽ tung hết tất cả ~N~ đồng xu. Tìm xác suất để có số mặt ngửa nhiều hơn số mặt sấp.
Input
Dòng đầu tiên chứa số nguyên dương lẻ ~N~ ~(1 \leq N \leq 2999)~
Dòng tiếp theo chứa ~N~ số thực ~p_{i}~ ~(0 < p_{i} < 1)~, mỗi số có hai chữ số thập phân.
Output
In ra xác suất để có số mặt ngửa nhiều hơn số mặt sấp. Kết quả in ra được coi là chính xác nếu sai số tuyệt đối với đáp án không vượt quá ~10^{-9}~.
Sample 1
Input
3
0.30 0.60 0.80
Output
0.612
Giải thích
Xác suất để có số mặt ngửa nhiều hơn số mặt sấp bao gồm các trường hợp:
- Xác suất để có (Ngửa, Ngửa, Ngửa) là ~0.3×0.6×0.8=0.144~;
- Xác suất để có (Sấp, Ngửa, Ngửa) là ~0.7×0.6×0.8=0.336~;
- Xác suất để có (Ngửa, Sấp, Ngửa) là ~0.3×0.4×0.8=0.096~;
- Xác suất để có (Ngửa, Ngửa, Sấp) là ~0.3×0.6×0.2=0.036~.
Do đó, xác suất để có số mặt ngửa nhiều hơn số mặt sấp là ~0.144+0.336+0.096+0.036=0.612~.
Sample 2
Input
1
0.50
Output
0.5
Giải thích:
Kết quả in ra ví dụ như 0.500, 0.500000001 and 0.499999999 đều được coi là chình xác.
Sample 3
Input
5
0.42 0.01 0.42 0.99 0.42
Output
0.3821815872
Bình luận
à có thể làm rõ lời giải bài này một chút, ta giải bằng dp xác xuất cho nó, có 2 trạng thái là tới đồng xu i và có bao nhiêu mặt ngửa dp[i][j]
khi tới đồng xu i, có 2 khả năng là sấp và ngửa nên
ngửa: sẽ chèn thêm từ dp[i - 1][j - 1] * a[i] xác xuất
sấp: xác xuất sấp là 1 - a[i] sẽ chèn thêm từ dp[i - 1][j] * (1 - a[i]) xác xuất
kết quả: dp[i][j] = dp[i - 1][j - 1] * a[i] + dp[i - 1][j] * (1 - a[i])
hay
hay
hay
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
nể admin ác =)))
code sol lú vl =))))
vl sao may ong toan de avt gai the
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
bai nay hay
adu bai nay hay qua ae