为什么 TLE
  • 板块学术版
  • 楼主Nine_Suns
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/9 09:09
  • 上次更新2024/10/9 09:15:47
查看原帖
为什么 TLE
912738
Nine_Suns楼主2024/10/9 09:09
	void calc (char* s) {
		int idx = 0; vis[0] = 1;
		for (int i = 1;i <= strlen(s+1);i++) {
			idx = ch[idx][op[s[i]]]; 
			assert(0 <= idx && idx < N); 
			vis[idx] = 1;
			int j = idx;
// 			while (!vis[fail[j]]) vis[fail[j]] = 1, j = fail[j]; 
		}
	}

这一行代码交到题目中会 T。

	void calc (char* s) {
		int idx = 0; vis[0] = 1;
		for (int i = 1;i <= strlen(s+1);i++) {
			idx = ch[idx][op[s[i]]]; 
			assert(0 <= idx && idx < N); 
			int j = idx;
// 			while (!vis[fail[j]]) vis[fail[j]] = 1, j = fail[j]; 
		}
	}

这个则不会(去掉 vis[idx]=1)。

题是这个 https://www.luogu.com.cn/problem/P5231

2024/10/9 09:09
加载中...