#include<iostream>
#include<string>
#include<set>
#include<algorithm>
#define int long long
using namespace std;
int dp[200005];
int Hash(string x)
{
int ans = 0;
for (int i = 0; i < x.size(); i++) ans = ans * 131 + x[i] - 'a' + 1;
return ans;
}
set<int>s;
signed main()
{
string a;
int ans = 0;
dp[0] = 1;
int len = 0;
while (a!=".")
{
cin >> a;
s.insert(Hash(a));
if (a.size() > len)
{
len = a.size();
}
}
cin >> a;
a = " " + a;
for (int i = 1; i < a.size(); i++)
{
for (int j = i - len+1; j <= i; j++)
{
if (j > 0)
{
string c = a.substr(j, i-j+1);
if (s.count(Hash(c)))
{
dp[i] = max(dp[i], dp[j-1]);
}
}
}
if (dp[i])
{
ans = max(ans, i);
}
}
cout << ans;
return 0;
}
我看了我思路和题解都一样,求调教5555555