卬高杯
提出id | 提出時刻 | ユーザー名 | 問題 | 言語 | 判定状況 | 判定 | 実行時間 |
---|---|---|---|---|---|---|---|
114820 | 2023-10-24 08:31:38 | n_o_n_o_n | H | cpp | 19/19 | WA | 261 |
#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