結果
問題 | No.1688 Veterinarian |
ユーザー |
![]() |
提出日時 | 2025-03-20 21:20:03 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 3,153 bytes |
コンパイル時間 | 202 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 75,604 KB |
最終ジャッジ日時 | 2025-03-20 21:21:13 |
合計ジャッジ時間 | 1,887 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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 + cif total < 2:current_dp[a][b][c] = (0.0, 0.0, 0.0)continuetotal_choose = total * (total - 1) // 2expected_w = 0.0expected_b = 0.0expected_cr = 0.0# Same whiteif a >= 2:pairs = a * (a - 1) // 2prob = pairs / total_choosenew_a = a - 1ew, eb, ecr = prev_dp[new_a][b][c]expected_w += prob * (1.0 + ew)expected_b += prob * ebexpected_cr += prob * ecr# Same blackif b >= 2:pairs = b * (b - 1) // 2prob = pairs / total_choosenew_b = b - 1ew, eb, ecr = prev_dp[a][new_b][c]expected_b += prob * (1.0 + eb)expected_w += prob * ewexpected_cr += prob * ecr# Same brownif c >= 2:pairs = c * (c - 1) // 2prob = pairs / total_choosenew_c = c - 1ew, eb, ecr = prev_dp[a][b][new_c]expected_cr += prob * (1.0 + ecr)expected_w += prob * ewexpected_b += prob * eb# Different pairs# White and Blackif a > 0 and b > 0:pairs = a * bprob = pairs / total_chooseew, eb, ecr = prev_dp[a][b][c]expected_w += prob * ewexpected_b += prob * ebexpected_cr += prob * ecr# White and Brownif a > 0 and c > 0:pairs = a * cprob = pairs / total_chooseew, eb, ecr = prev_dp[a][b][c]expected_w += prob * ewexpected_b += prob * ebexpected_cr += prob * ecr# Black and Brownif b > 0 and c > 0:pairs = b * cprob = pairs / total_chooseew, eb, ecr = prev_dp[a][b][c]expected_w += prob * ewexpected_b += prob * ebexpected_cr += prob * ecrcurrent_dp[a][b][c] = (expected_w, expected_b, expected_cr)prev_dp = current_dpfinal = prev_dp[A][B][C]print(final[0], final[1], final[2])