結果

問題 No.108 トリプルカードコンプ
ユーザー nohtaray
提出日時 2019-06-14 17:04:58
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
RE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,018 bytes
コンパイル時間 113 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 11,520 KB
最終ジャッジ日時 2024-11-08 01:37:26
合計ジャッジ時間 2,064 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample RE * 3
other RE * 20
権限があれば一括ダウンロードができます

ソースコード

diff #

import bisect
import os
from collections import Counter, deque
from fractions import gcd
from functools import lru_cache
from functools import reduce
import functools
import heapq
import itertools
import math
import numpy as np
import re
import sys

if os.getenv("LOCAL"):
    sys.stdin = open("_in.txt", "r")

sys.setrecursionlimit(2147483647)
INF = float("inf")

N = int(sys.stdin.readline())
A = np.array(list(map(int, sys.stdin.readline().split())))
reqs = np.maximum(0, 3 - A)


@lru_cache(maxsize=None)
def expected(i, j, k):
    # あと 1 個必要なカードが i 種類
    # あと 2 個必要なカードが j 種類
    # あと 3 個必要なカードが k 種類
    if i == j == k == 0:
        return 0
    s = 0
    if i > 0:
        s += expected(i - 1, j, k) * i
    if j > 0:
        s += expected(i + 1, j - 1, k) * j
    if k > 0:
        s += expected(i, j + 1, k - 1) * k
    return s / (i + j + k) + N / (i + j + k)


print(expected((reqs == 1).sum(), (reqs == 2).sum(), (reqs == 3).sum()))
0