結果

問題 No.66 輝け☆全国たこやき杯
ユーザー tktk_snsntktk_snsn
提出日時 2020-12-21 17:17:52
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 100 ms / 5,000 ms
コード長 515 bytes
コンパイル時間 225 ms
コンパイル使用メモリ 81,996 KB
実行使用メモリ 88,868 KB
最終ジャッジ日時 2024-09-21 13:00:51
合計ジャッジ時間 1,436 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 38 ms
52,096 KB
testcase_01 AC 34 ms
52,224 KB
testcase_02 AC 34 ms
52,480 KB
testcase_03 AC 35 ms
52,608 KB
testcase_04 AC 36 ms
52,224 KB
testcase_05 AC 53 ms
60,928 KB
testcase_06 AC 48 ms
62,672 KB
testcase_07 AC 50 ms
67,200 KB
testcase_08 AC 73 ms
77,156 KB
testcase_09 AC 100 ms
88,868 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
input = sys.stdin.readline

def win(si, sj):
    return si * si / (si * si + sj * sj)


M = int(input())
N = 1 << M
S = [int(input()) for _ in range(N)]

dp = [1] * N
op = [[i] for i in range(N)]
for i in range(M):
    dp_nxt = [0] * N
    for x in range(N):
        P = 0.
        opponent = op[x].copy()
        for y in opponent:
            y ^= (1 << i)
            P += win(S[x], S[y]) * dp[y]
            op[x].append(y)
        dp_nxt[x] = dp[x] * P
    dp = dp_nxt

print("{:.9f}".format(dp[0]))
0