CodeForces 191A
Posted strategist-614
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces 191A相关的知识,希望对你有一定的参考价值。
CodeForces 191A
考虑 dp
dp[i][j]
表示 以i
为开头以 j
为结尾字符串能够满足条件的最大值。
因为要满足 a...b,c....d a == d && b == c
的条件。。
直接
for (int j = 1; j <= 26; j++)
{
if (dp[j][st])
dp[j][ed] = max(dp[j][ed], dp[j][st] + m);
}
dp[st][ed] = max(dp[st][ed], m);
枚举开头进行更新,或者枚举结尾的位置更新也行。。
int dp[100][100];
string s[N];
int main()
{
int n;
cin >> n;
rep(i, n)
{
cin >> s[i];
}
rep(i, n)
{
int m = s[i].size();
int st = s[i][0] - ‘a‘ + 1;
int ed = s[i][m - 1] - ‘a‘ + 1;
for (int j = 1; j <= 26; j++)
{
if (dp[j][st])
dp[j][ed] = max(dp[j][ed], dp[j][st] + m);
}
dp[st][ed] = max(dp[st][ed], m);
}
int ans = 0;
for (int i = 1; i <= 26; i++)
{
ans = max(ans, dp[i][i]);
}
cout << ans << endl;
return 0;
}
以上是关于CodeForces 191A的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces 86C Genetic engineering(AC自动机+DP)
CodeForces 1005D Polycarp and Div 3(思维贪心dp)
(Incomplete) Codeforces 394 (Div 2 only)