求证明复杂度或给出hack
  • 板块学术版
  • 楼主Lucky_Luo
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/23 20:14
  • 上次更新2023/11/2 11:40:40
查看原帖
求证明复杂度或给出hack
664063
Lucky_Luo楼主2023/10/23 20:14

S组 T2 貌似没有人这么写,但是目前在所有的估分平台上都过了?

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e6 + 7;
int i, j, k, l, r, m, n, f[N], u[N];
ll c[N], ans;
char s[N];
int main()
{
	scanf("%d%s", &n, s+1);
	for (r=2; r<=n; r++)
	{
		i = r - 1;
		while (f[i] && s[i] != s[r]) i = f[i];
		if (s[i] == s[r]) c[r] = c[i-1] + 1, f[r] = i - 1;
	}
	for (i=1; i<=n; i++) ans += c[i];
	printf("%lld", ans);
}
2023/10/23 20:14
加载中...