結果

問題 No.295 hel__world
ユーザー maspymaspy
提出日時 2020-05-04 13:40:19
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
WA  
実行時間 -
コード長 1,880 bytes
コンパイル時間 221 ms
コンパイル使用メモリ 12,928 KB
実行使用メモリ 30,460 KB
最終ジャッジ日時 2024-06-24 07:51:08
合計ジャッジ時間 6,728 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 25 WA * 4 RE * 24
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import sys
from functools import lru_cache
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
INF = 2 ** 62
S = tuple(map(int, readline().split()))
T = tuple(x - ord('a') for x in read().rstrip())
L = [[] for _ in range(26)]
last_ch = -1
last_len = 0
for x in T:
if x != last_ch:
L[x].append(1)
else:
L[x][-1] += 1
last_ch = x
def check_zero(S, L):
for a in range(26):
# if S[a] > 0 and (not L[a]):
# return True
if S[a] < sum(L[a]):
return True
if check_zero(S, L):
print(0)
@lru_cache(None)
def comb(n, k):
if k < 0 or k > n:
return 0
k = min(k, n-k)
x = 1
for i in range(k):
x *= (n - i)
x //= (i + 1)
if x >= INF:
return INF
return x
def compute(n, nums):
if not nums:
return 1
n -= sum(nums)
if not n:
return 1
nums.sort(reverse=True)
nums = nums[:70]
if sum(nums) >= 6 and n > 10 ** 4:
return INF
if n <= 10 ** 4:
A = nums[:]
for _ in range(n):
# 1
i = max(range(len(nums)), key=lambda i: (A[i]+1) / (A[i] - nums[i] + 1))
A[i] += 1
x = 1
for a, k in zip(A, nums):
x *= comb(a,k)
return x
# n k2
#
ret = 1
avg = n // len(nums)
for p in itertools.product(range(avg - 4, avg + 5), repeat=len(nums)):
if sum(avg) != n:
continue
x = 1
for a, k in zip(p, nums):
x *= comb(a,k)
if ret < x:
ret = x
return ret
x = 1
for n, nums in zip(S, L):
x *= compute(n, nums)
if x >= INF:
x = 'hel'
print(x)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0