結果
問題 | No.173 カードゲーム(Medium) |
ユーザー | はむ吉🐹 |
提出日時 | 2016-04-04 16:43:05 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,265 ms / 3,000 ms |
コード長 | 1,283 bytes |
コンパイル時間 | 1,113 ms |
コンパイル使用メモリ | 81,976 KB |
実行使用メモリ | 78,744 KB |
最終ジャッジ日時 | 2024-10-03 04:11:21 |
合計ジャッジ時間 | 16,298 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 93 ms
76,132 KB |
testcase_01 | AC | 411 ms
78,272 KB |
testcase_02 | AC | 2,010 ms
78,344 KB |
testcase_03 | AC | 1,998 ms
78,744 KB |
testcase_04 | AC | 2,019 ms
78,572 KB |
testcase_05 | AC | 1,745 ms
77,768 KB |
testcase_06 | AC | 1,619 ms
77,324 KB |
testcase_07 | AC | 1,511 ms
77,492 KB |
testcase_08 | AC | 1,477 ms
77,340 KB |
testcase_09 | AC | 2,265 ms
78,380 KB |
ソースコード
#!/usr/bin/env pypy3 # -*- coding: utf-8 -*- import random MAX_TRIAL = 3 * 10 ** 5 def use_card(l, p, cards): if l == 1: return cards.pop() else: cards.sort() judge = random.random() if judge <= p: return cards.pop(0) else: return cards.pop(random.randint(1, l - 1)) def simulate(pa, pb, a_cards, b_cards): a_score = 0 b_score = 0 a_cards_copy = a_cards[:] b_cards_copy = b_cards[:] l = len(a_cards) while a_cards_copy and b_cards_copy: a_card = use_card(l, pa, a_cards_copy) b_card = use_card(l, pb, b_cards_copy) sum_card = a_card + b_card if a_card > b_card: a_score += sum_card elif b_card > a_card: b_score += sum_card l -= 1 return 1 if a_score > b_score else 0 def compute_probability(pa, pb, a_cards, b_cards, trial=MAX_TRIAL): f = lambda: simulate(pa, pb, a_cards, b_cards) return sum(f() for _ in range(trial)) / trial def main(): _, pa, pb = map(float, input().split()) a_cards = list(map(int, input().split())) b_cards = list(map(int, input().split())) print("{:.12f}".format(compute_probability(pa, pb, a_cards, b_cards))) if __name__ == '__main__': main()