ccf vs 题解,求助时间复杂度
查看原帖
ccf vs 题解,求助时间复杂度
782904
哈哈人生楼主2024/7/25 16:21

按照第一篇题解的思路的第一部分,没加h数组的优化打出了一份代码,按题解中的说法是会被极端数据卡到n^2,但我一交上去发现过了。。。

是ccf数据不强,还是题解时间复杂度分析有误?

如果是前者建议添加hack,后者建议题解改动。

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,sum=0,f[2000005],g[2000005];
string s;
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>s;
	for(int i=1; i<n; i++) {
		g[i]=i-1;
		while(g[i]>=0&&s[i]!=s[g[i]])g[i]=g[g[i]]-1;
		if(g[i]>=0)f[i]=f[(g[i]!=0?g[i]-1:0)]+1;
		sum+=f[i];
	}
	cout<<sum;
	return 0;
}

难不成是时间复杂度均摊了?求助大佬。。。

2024/7/25 16:21
加载中...