秋祭 | 静岡高校工学部



卬高杯


提出詳細

提出id提出時刻ユーザー名問題言語判定状況判定実行時間
1149912023-10-25 09:25:35loop0919Hpython19/19WA696

from string import ascii_letters
ascii_index = {c : i for i, c in enumerate(ascii_letters)}
ascii_set = set(ascii_letters)
N = int(input())
S = input().split()

for s in S:
    if all(c in ascii_set for c in s):
        pass
    else:
        print("-1")
        exit()

dp = [[0 for _ in range(len(ascii_letters))] for _ in range(1<<N)]

for bit in range(1<<N):
    for i, s in enumerate(S):
        if (bit >> i) & 1 == 1:
            continue
        j = ascii_index[s[0]]
        bit_next = bit | (1<<i)
        idx = ascii_index[s[-1]]
        dp[bit_next][idx] = max(dp[bit_next][idx], dp[bit][j] + len(s))

print(ascii_index)
print(max(dp[(1<<N)-1]))

sample1.txt WA 19
sample2.txt WA 24
sample3.txt WA 20
case1.txt WA 654
case2.txt WA 674
case3.txt WA 696
case4.txt WA 648
case5.txt WA 677
case6.txt WA 622
case7.txt WA 667
case8.txt WA 19
case9.txt WA 19
case10.txt WA 19
case11.txt WA 27
case12.txt WA 20
case13.txt WA 21
case14.txt WA 24
case15.txt WA 26
case16.txt WA 637
696 WA