考虑到经典结论:。于是你可以发现,处理出每个位置所在的单词开头位置的下标后,直接暴力对每个长度模拟往后跳的过程,时间复杂度就是 的,于是就做完了。
signed main()
{
cin.tie(0)->sync_with_stdio(false);
string s;
getline(cin, s);
int a, b;
cin >> a >> b;
int n = s.size();
memset(st, -1, sizeof st);
for (int i = 0, j = 0; i < n; ++i)
{
if (s[i] == ' ')
j = i + 1;
st[i] = j;
if (i >= j)
++len[j];
}
for (int i = a; i <= b; ++i)
{
int res = 0;
for (int j = 0; ~j; j = st[j + i])
res += len[j] + 1;
cout << res - 1 << '\n';
}
return 0;
}
喜欢的话,留下你的评论吧~