結果
問題 |
No.1688 Veterinarian
|
ユーザー |
![]() |
提出日時 | 2025-03-20 19:03:07 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 3,153 bytes |
コンパイル時間 | 169 ms |
コンパイル使用メモリ | 82,496 KB |
実行使用メモリ | 75,160 KB |
最終ジャッジ日時 | 2025-03-20 19:03:17 |
合計ジャッジ時間 | 1,901 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 4 RE * 10 |
ソースコード
A, B, C, N = map(int, input().split()) # Initialize the DP table for k=0 (all zeros) prev_dp = [[[ (0.0, 0.0, 0.0) for _ in range(C+1)] for __ in range(B+1)] for ___ in range(A+1)] for step in range(N): current_dp = [[[0.0 for _ in range(3)] for __ in range(B+1)] for ___ in range(A+1)] for a in range(A+1): for b in range(B+1): for c in range(C+1): total = a + b + c if total < 2: current_dp[a][b][c] = (0.0, 0.0, 0.0) continue total_choose = total * (total - 1) // 2 expected_w = 0.0 expected_b = 0.0 expected_cr = 0.0 # Same white if a >= 2: pairs = a * (a - 1) // 2 prob = pairs / total_choose new_a = a - 1 ew, eb, ecr = prev_dp[new_a][b][c] expected_w += prob * (1.0 + ew) expected_b += prob * eb expected_cr += prob * ecr # Same black if b >= 2: pairs = b * (b - 1) // 2 prob = pairs / total_choose new_b = b - 1 ew, eb, ecr = prev_dp[a][new_b][c] expected_b += prob * (1.0 + eb) expected_w += prob * ew expected_cr += prob * ecr # Same brown if c >= 2: pairs = c * (c - 1) // 2 prob = pairs / total_choose new_c = c - 1 ew, eb, ecr = prev_dp[a][b][new_c] expected_cr += prob * (1.0 + ecr) expected_w += prob * ew expected_b += prob * eb # Different pairs # White and Black if a > 0 and b > 0: pairs = a * b prob = pairs / total_choose ew, eb, ecr = prev_dp[a][b][c] expected_w += prob * ew expected_b += prob * eb expected_cr += prob * ecr # White and Brown if a > 0 and c > 0: pairs = a * c prob = pairs / total_choose ew, eb, ecr = prev_dp[a][b][c] expected_w += prob * ew expected_b += prob * eb expected_cr += prob * ecr # Black and Brown if b > 0 and c > 0: pairs = b * c prob = pairs / total_choose ew, eb, ecr = prev_dp[a][b][c] expected_w += prob * ew expected_b += prob * eb expected_cr += prob * ecr current_dp[a][b][c] = (expected_w, expected_b, expected_cr) prev_dp = current_dp final = prev_dp[A][B][C] print(final[0], final[1], final[2])