結果
問題 | No.173 カードゲーム(Medium) |
ユーザー | はむ吉🐹 |
提出日時 | 2016-04-04 16:44:27 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,360 ms / 3,000 ms |
コード長 | 1,278 bytes |
コンパイル時間 | 148 ms |
コンパイル使用メモリ | 82,112 KB |
実行使用メモリ | 78,648 KB |
最終ジャッジ日時 | 2024-10-03 04:12:02 |
合計ジャッジ時間 | 9,653 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 83 ms
76,472 KB |
testcase_01 | AC | 310 ms
78,472 KB |
testcase_02 | AC | 1,170 ms
78,340 KB |
testcase_03 | AC | 1,211 ms
78,648 KB |
testcase_04 | AC | 1,174 ms
78,456 KB |
testcase_05 | AC | 997 ms
77,624 KB |
testcase_06 | AC | 910 ms
77,436 KB |
testcase_07 | AC | 872 ms
77,276 KB |
testcase_08 | AC | 842 ms
77,292 KB |
testcase_09 | AC | 1,360 ms
78,496 KB |
ソースコード
#!/usr/bin/env pypy3 # -*- coding: utf-8 -*- import random MAX_TRIAL = 160000 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()