秋祭 | 静岡高校工学部



卬高杯


提出詳細

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

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

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(max(row) for row in dp))

sample1.txt AC 19
sample2.txt AC 25
sample3.txt AC 22
case1.txt AC 701
case2.txt AC 665
case3.txt AC 667
case4.txt AC 680
case5.txt AC 667
case6.txt AC 657
case7.txt AC 708
case8.txt RE 74
case9.txt RE 84
case10.txt RE 80
case11.txt AC 19
case12.txt RE 76
case13.txt RE 83
case14.txt RE 74
case15.txt RE 75
case16.txt AC 677
708 RE