秋祭 | 静岡高校工学部



卬高杯


提出詳細

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

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(max(dp[(1<<N)-1]))

sample1.txt AC 19
sample2.txt AC 25
sample3.txt AC 20
case1.txt AC 643
case2.txt AC 655
case3.txt AC 645
case4.txt AC 658
case5.txt AC 618
case6.txt AC 624
case7.txt AC 626
case8.txt WA 19
case9.txt WA 23
case10.txt WA 28
case11.txt WA 29
case12.txt WA 20
case13.txt WA 19
case14.txt WA 23
case15.txt WA 28
case16.txt AC 663
663 WA