結果
問題 |
No.108 トリプルカードコンプ
|
ユーザー |
![]() |
提出日時 | 2021-01-28 00:54:58 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 557 ms / 5,000 ms |
コード長 | 776 bytes |
コンパイル時間 | 89 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 53,844 KB |
最終ジャッジ日時 | 2024-06-25 01:57:48 |
合計ジャッジ時間 | 3,027 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 20 |
ソースコード
import copy from functools import lru_cache import sys sys.setrecursionlimit(1000000) N = int(input()) A = list(map(int,input().split())) B = [min(A[i],3) for i in range(N)] B = tuple(B) #print(B) #0,1,2,3以上個の数 C = [0,0,0,0] for x in A: if x >=3 : C[3] += 1 else: C[x] += 1 C = tuple(C) #print(C) @lru_cache(maxsize=None) def solve(X): ret = N loop = N - X[3] #print(X) for i in range(3): if X[i] == 0: continue if i <= 2: Z = list(X) Z[i] -= 1 Z[i+1] += 1 Z = tuple(Z) ret += solve(Z)*X[i] #print("A",X,loop,ret) if loop == 0: ret = 0 else: ret /= loop #print(X,loop,ret) return ret ans = solve(C) print(ans)