时间复杂度
查看原帖
时间复杂度
416242
New_hope楼主2024/10/24 11:21

请问以下代码的时间复杂度是多少?

#include <bits/stdc++.h>
#define int long long
#define _ (int)(2e6 + 4)
using namespace std;

int n, ans;
int pre[_], w[_];
char s[_];

signed main()
{
  cin >> n;
  for (int i(1); i <= n; i ++) cin >> s[i];
  for (int i(1); i <= n; i ++) {
    int p(i);
    while (p) {
      if (s[p - 1] == s[i]) {
        pre[i] = p - 1;
        break;
      } p = pre[p - 1];
    } w[pre[i]] ++;
  }
  for (int i(n); i >= 1; i --) {
    ans += w[i];
    w[pre[i - 1]] += w[i];
  }
  cout << ans;

  return 0;
}
2024/10/24 11:21
加载中...