結果
| 問題 |
No.174 カードゲーム(Hard)
|
| コンテスト | |
| ユーザー |
convexineq
|
| 提出日時 | 2020-12-15 22:07:41 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 53 ms / 2,000 ms |
| コード長 | 827 bytes |
| コンパイル時間 | 190 ms |
| コンパイル使用メモリ | 82,336 KB |
| 実行使用メモリ | 66,660 KB |
| 最終ジャッジ日時 | 2024-09-20 02:20:23 |
| 合計ジャッジ時間 | 1,273 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 12 |
ソースコード
def get(n,p):
res = [[0.0]*n for _ in range(n)]
for j in range(n):
dp = [0.0]*n # i 回目, j が k 枚目
dp[j] = 1.0
for i in range(n-1):
ndp = [0.0]*n
q = (1.0-p)/(n-i-1)
for k in range(n):
ndp[k] += dp[k]*q*(n-i-1-k)
if k: ndp[k-1] += dp[k]*(1.0 - q*(n-i-k))
res[i][j] += dp[k]*(p if k==0 else q)
dp = ndp
res[n-1][j] = sum(dp)
return res
n,pa,pb = input().split()
n,pa,pb = int(n), float(pa), float(pb)
a = sorted(map(int,input().split()))
b = sorted(map(int,input().split()))
ra,rb = get(n,pa),get(n,pb)
ans = 0.0
for s in range(n):
for i,ai in enumerate(a):
for j,bj in enumerate(b):
if ai > bj:
ans += ra[s][i]*rb[s][j]*(ai+bj)
print(ans)
convexineq