提交记录 3972


用户 题目 状态 得分 用时 内存 语言 代码长度
Dof noi18c. 【NOI2018】你的名字 Time Limit Exceeded 48 4 s 313932 KB C++ 1.71 KB
提交时间 评测时间
2018-07-18 20:15:51 2020-07-31 22:11:26
#include <cstdio>
#include <cstring>
#include <map>

typedef long long LL;
const int N = 2000005, BAS = 137;

int n, m, Qi;
char s[N], t[N];
LL ans, H[N], h[N];
std::map<LL, int> M;

struct Sam {
	int tot, lst, tr[26][N], fa[N], dep[N];
	inline int New_(int _dep, int slink) {
		dep[++tot] = _dep; fa[tot] = slink;
		return tot;
	}	
	void Ins(int a) {
		int np = New_(dep[lst] + 1, 0), p = lst;
		lst = np;
		for (; p && !tr[a][p]; p = fa[p]) tr[a][p] = np;
		if (!p) return void(fa[np] = 1);
		int q = tr[a][p];
		if (dep[p] + 1 == dep[q]) return void(fa[np] = q);
		int y = New_(dep[p] + 1, fa[q]);
		for (int i = 0; i < 26; ++i) tr[i][y] = tr[i][q];
		fa[q] = fa[np] = y;
		for (; p && tr[a][p] == q; p = fa[p]) tr[a][p] = y;
	}
	void Clear() {
		for (int i = 1; i <= tot; ++i) {
			for (int j = 0; j < 26; ++j) tr[j][i] = 0;
			fa[i] = dep[i] = 0;
		}
		tot = lst = 1;
	}
} SA, SB;

inline LL Hash_(int l, int r) {
	return (h[r] - h[l - 1]) * H[m - l];
}

int main() {
	H[0] = 1;
	for (int i = 1; i < N; ++i) H[i] = H[i - 1] * BAS;
	
	scanf("%s", s + 1);
	n = strlen(s + 1);
	SA.Clear();
	for (int i = 1; i <= n; ++i) {
		SA.Ins(s[i] - 'a');
	}
	
	scanf("%d", &Qi);
	for (int fk; Qi; --Qi) {
		scanf("%s%d%d", t + 1, &fk, &fk);
		m = strlen(t + 1);
		SB.Clear(); M.clear(); ans = 0;
		for (int i = 1; i <= m; ++i) {
			h[i] = h[i - 1] + H[i] * t[i];
			SB.Ins(t[i] - 'a');
		}
		for (int i = 2; i <= SB.tot; ++i) {
			ans += SB.dep[i] - SB.dep[SB.fa[i]];
		}
		
		for (int i = 1; i <= m; ++i) {
			int p = 1;
			for (int j = i; j <= m; ++j) {
				int nx = t[j] - 'a';
				if (SA.tr[nx][p]) p = SA.tr[nx][p]; else break;
				LL ha = Hash_(i, j);
				if (M[ha] == 0) {
					M[ha] = 1; --ans;
				}
			}
		}
		printf("%lld\n", ans);
	}
	
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #112.983 ms15 MB + 604 KBAcceptedScore: 4

Testcase #219.475 ms15 MB + 752 KBAcceptedScore: 4

Testcase #320.204 ms15 MB + 756 KBAcceptedScore: 4

Testcase #4167.843 ms16 MB + 240 KBAcceptedScore: 4

Testcase #5161.709 ms16 MB + 228 KBAcceptedScore: 4

Testcase #64 s306 MB + 588 KBTime Limit ExceededScore: 0

Testcase #74 s264 MB + 352 KBTime Limit ExceededScore: 0

Testcase #81.483 s37 MB + 636 KBAcceptedScore: 4

Testcase #997.331 ms33 MB + 268 KBAcceptedScore: 4

Testcase #102.989 s55 MB + 316 KBAcceptedScore: 4

Testcase #11214.403 ms50 MB + 608 KBAcceptedScore: 4

Testcase #124 s72 MB + 796 KBTime Limit ExceededScore: 0

Testcase #13346.706 ms68 MB + 692 KBAcceptedScore: 4

Testcase #144 s90 MB + 880 KBTime Limit ExceededScore: 0

Testcase #15491.224 ms87 MB + 308 KBAcceptedScore: 4

Testcase #164 s108 MB + 1008 KBTime Limit ExceededScore: 0

Testcase #17645.562 ms106 MB + 172 KBAcceptedScore: 4

Testcase #184 s63 MB + 824 KBTime Limit ExceededScore: 0

Testcase #194 s78 MB + 556 KBTime Limit ExceededScore: 0

Testcase #204 s93 MB + 544 KBTime Limit ExceededScore: 0

Testcase #214 s109 MB + 100 KBTime Limit ExceededScore: 0

Testcase #224 s108 MB + 1004 KBTime Limit ExceededScore: 0

Testcase #234 s108 MB + 936 KBTime Limit ExceededScore: 0

Testcase #244 s109 MB + 48 KBTime Limit ExceededScore: 0

Testcase #254 s109 MB + 132 KBTime Limit ExceededScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-17 18:16:27 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠