結果
| 問題 |
No.1512 作文
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-05-22 12:36:03 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 33 ms / 2,000 ms |
| コード長 | 1,796 bytes |
| コンパイル時間 | 3,267 ms |
| コンパイル使用メモリ | 197,320 KB |
| 最終ジャッジ日時 | 2025-01-21 17:12:11 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 38 |
ソースコード
#include<bits/stdc++.h>
typedef int64_t i64;
typedef long double f128;
using namespace std;
template<typename T>
void scan(T& n)
{
cin>>n;
return;
}
void scan()
{
return;
}
template<typename T,class... Args>
void scan(T& n,Args&... args)
{
scan(n);
scan(args...);
return;
}
template<typename T>
void scan_array(T start,T end)
{
T now=start;
for(;now!=end;++now)
{
scan(*now);
}
return;
}
template<typename T>
void print(T n)
{
cout<<n;
return;
}
template<typename T>
void println(T n)
{
print(n);
print('\n');
return;
}
template<typename T,class... Args>
void println(T n,Args... args)
{
print(n);
print(' ');
println(args...);
return;
}
template<typename T>
void print_array(T start,T end)
{
T now=start;
print(*now);
for(;now!=end;++now)
{
print(' ');
print(*now);
}
print("");
return;
}
i64 pow_mod(i64 a,i64 n,i64 mod)
{
i64 res=1,now=a;
while(n)
{
if(n&1)
{
res=res*now%mod;
}
now=now*now%mod;
n>>=1;
}
return res;
}
i64 inv_mod(i64 a,i64 mod)
{
return pow_mod(a,mod-2,mod);
}
int main()
{
int N;
scan(N);
vector<vector<int>> G(26,vector<int> (26));
vector<int> vec(26);
for(int i=0;i<N;++i)
{
string S;
scan(S);
char now='a';
bool is_good=1;
for(size_t i=0;i<S.size();++i)
{
if(S[i]<now)
{
is_good=0;
}
now=S[i];
}
if(!is_good)
{
continue;
}
if(S[0]==S.back())
{
vec[S[0]-'a']+=S.size();
}
else
{
G[S[0]-'a'][S.back()-'a']=max(G[S[0]-'a'][S.back()-'a'],(int)S.size());
}
}
vector<int> ans(26);
for(int i=0;i<26;++i)
{
for(int j=0;j<i;++j)
{
ans[i]=max(ans[i],ans[j]+G[j][i]);
}
ans[i]+=vec[i];
}
println(ans[25]);
}