秋祭 | 静岡高校工学部



卬高杯


提出詳細

提出id提出時刻ユーザー名問題言語判定状況判定実行時間
1148202023-10-24 08:31:38n_o_n_o_nHcpp19/19WA261

#include<bits/stdc++.h>
using namespace std;

int N,dp[1<<16][52];
string S[16];

int main(){
    cin>>N;
    for(int i=0; i<N; i++)cin>>S[i];
    for(int i=0; i<(1<<N); i++)for(int j=0; j<52; j++)
    {
        for(int k=0; k<N; k++)if(i&(1<<k))
        {
            if(j<26)
            {
                if(S[k][0]==('a'+j)){
                    int c;
                    if('a'<=S[k].back()&&S[k].back()<='z')c=S[k].back()-'a';
                    else c=S[k].back()-'A';
                    dp[i][j]=max(dp[i][j],dp[i-(1<<k)][c]+(int)S[k].size());
                }
            }
            else
            {
                if(S[k][0]==('A'+j-26)){
                    int c;
                    if('a'<=S[k].back()&&S[k].back()<='z')c=S[k].back()-'a';
                    else c=S[k].back()-'A';
                    dp[i][j]=max(dp[i][j],dp[i-(1<<k)][c]+(int)S[k].size());
                }
            }
        }
    }
    int ans=0;
    for(int i=0; i<N; i++)
    {
        int c;
        if('a'<=S[i].back()&&S[i].back()<='z')c=S[i].back()-'a';
        else c=S[i].back()-'A';
        ans=max(ans,dp[(1<<N)-1][c]);
    }
    cout << ans << endl;
}

sample1.txt AC 2
sample2.txt AC 2
sample3.txt AC 3
case1.txt WA 261
case2.txt WA 237
case3.txt WA 232
case4.txt WA 229
case5.txt WA 233
case6.txt AC 224
case7.txt WA 221
case8.txt WA 3
case9.txt WA 19
case10.txt WA 19
case11.txt WA 6
case12.txt WA 7
case13.txt WA 27
case14.txt WA 7
case15.txt WA 12
case16.txt WA 251
261 WA261 WA