QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#790344#2018. 字符串匹配_LSA_100 ✓614ms283300kbC++201.4kb2024-11-28 10:57:282024-11-28 10:57:33

Judging History

你现在查看的是最新测评结果

  • [2024-11-28 10:57:33]
  • 评测
  • 测评结果:100
  • 用时:614ms
  • 内存:283300kb
  • [2024-11-28 10:57:28]
  • 提交

answer

#include<bits/stdc++.h>
#define ll long long
#define ull unsigned ll
using namespace std;
ll read(){
	ll X = 0,r = 1;
	char ch = getchar();
	while(!isdigit(ch) && ch != '-') ch = getchar();
	if(ch == '-') r = -1,ch = getchar();
	while(isdigit(ch)) X = X*10+ch-'0',ch = getchar();
	return X*r;
}
const int N = (1<<20)+10;
int n;
char s[N];
ull hsh[N],pw[N],P=1331;
inline ull gethsh(int l,int r){
	return hsh[r]-hsh[l-1]*pw[r-l+1];
}
ll suf[N],pre[N],sum[N][30];
int t[30];
void solve(){
	scanf("%s",s+1);
	n = strlen(s+1);
	pw[0] = 1;
	for(int i=1;i<=n;i++){
		pw[i] = pw[i-1]*P;
		hsh[i] = hsh[i-1]*P+s[i];
	}
	int now = 0;
	for(int i=0;i<26;i++) t[i] = 0;
	for(int i=n;i;i--){
		int c = s[i]-'a';
		now -= t[c]&1;
		t[c]++;
		now += t[c]&1;
		suf[i] = now;
	}
	now = 0;
	for(int i=0;i<26;i++) t[i] = 0;
	for(int i=1;i<=n;i++){
		int c = s[i]-'a';
		now -= t[c]&1;
		t[c]++;
		now += t[c]&1;
		pre[i] = now;
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<=26;j++) sum[i][j] = sum[i-1][j];
		sum[i][pre[i]]++;
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=26;j++) sum[i][j] += sum[i][j-1];
	ll ans = 0;
	for(int i=2;i<=n;i++){
		int lst = 1;
		for(int j=i;j<n;j+=i){
			if(hsh[i] != gethsh(lst,j)) break;
			lst = j+1;
			ans += sum[i-1][suf[j+1]];
		}
	}
	cout << ans << "\n";
}
int main(){
//	freopen("string.in","r",stdin);
//	freopen("string.out","w",stdout);
	int T = read();
	while(T--) solve();
	return 0;
} 

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

score: 4
Accepted
time: 0ms
memory: 9960kb

input:

5
jjjjjjjjjj
lllllllcyg
mgmgmgmgmg
nycqtnycqt
tdutduwyga

output:

30
39
30
20
33

result:

ok 5 tokens

Test #2:

score: 4
Accepted
time: 2ms
memory: 11904kb

input:

5
hhhhhhhhhh
iiiiiiibkw
dgdgdgdgdg
ffffffffyf
ffzffzwsnw

output:

30
39
30
44
36

result:

ok 5 tokens

Test #3:

score: 4
Accepted
time: 2ms
memory: 11900kb

input:

5
rrrrrrrrrr
iiiiiiiwzr
dididididi
wwwwzqcjvv
mbymbyhgpc

output:

30
39
30
28
33

result:

ok 5 tokens

Test #4:

score: 4
Accepted
time: 0ms
memory: 11948kb

input:

5
cccccccccc
lllllllket
tututututu
ccbuxccbux
pnppnpnlwl

output:

30
39
30
26
32

result:

ok 5 tokens

Test #5:

score: 4
Accepted
time: 2ms
memory: 11988kb

input:

5
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuubgmwdgmgwvqvkbcvihsk
qdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaaqdaa
csqblzrdlnifzdoijirxfuuojcsqblzrdlnifzdoijirxfuuojcsqblzrdlnifzdoijirxfuuojcsqblzrdlnifzdoijirxf...

output:

6590
3585
2313
4359
4486

result:

ok 5 tokens

Test #6:

score: 4
Accepted
time: 1ms
memory: 9796kb

input:

5
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllsuqtxhunfvotmxfqebwj
rpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpiarpia
yyexplkvmxjuqzgrsmdaztszfyyexplkvmxjuqzgrsmdaztszfyyexplkvmxjuqzgrsmdaztszfyyexplkvmxjuqzgrsmdaz...

output:

6564
3560
2607
4517
4554

result:

ok 5 tokens

Test #7:

score: 4
Accepted
time: 0ms
memory: 11928kb

input:

5
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnkvpnzxdkdhjucliujhhl
quegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegquegqueg
aicsiooegbozaohagssdehvjzaicsiooegbozaohagssdehvjzaicsiooegbozaohagssdehvjzaicsiooegbozaohagssde...

output:

6517
3560
2888
4965
4105

result:

ok 5 tokens

Test #8:

score: 4
Accepted
time: 1ms
memory: 9944kb

input:

5
ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppphytnmeyelaxegcuzqkv
joksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoksjoks
yqmqquzipayftwvwjnbqptuhwyqmqquzipayftwvwjnbqptuhwyqmqquzipayftwvwjnbqptuhwyqmqquzipayftwvwjnbqp...

output:

6604
3560
2738
4804
4832

result:

ok 5 tokens

Test #9:

score: 4
Accepted
time: 0ms
memory: 10000kb

input:

5
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:

690923
325466
274377
538726
519032

result:

ok 5 tokens

Test #10:

score: 4
Accepted
time: 2ms
memory: 10160kb

input:

5
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:

688611
325466
278014
483768
516890

result:

ok 5 tokens

Test #11:

score: 4
Accepted
time: 0ms
memory: 10012kb

input:

5
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...

output:

690572
325466
282653
400319
517082

result:

ok 5 tokens

Test #12:

score: 4
Accepted
time: 1ms
memory: 10044kb

input:

5
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj...

output:

689440
325466
278624
464740
501911

result:

ok 5 tokens

Test #13:

score: 4
Accepted
time: 13ms
memory: 28676kb

input:

5
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...

output:

714173984
606072908
715934994
603558188
714547382

result:

ok 5 tokens

Test #14:

score: 4
Accepted
time: 7ms
memory: 19760kb

input:

5
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv...

output:

713410981
603184777
713761452
714012718
603184777

result:

ok 5 tokens

Test #15:

score: 4
Accepted
time: 23ms
memory: 26364kb

input:

5
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee...

output:

3502305645
3504362490
3495279874
3496151003
2412446034

result:

ok 5 tokens

Test #16:

score: 4
Accepted
time: 18ms
memory: 29692kb

input:

5
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...

output:

2419023179
3481792643
2416893029
3498851133
2414888013

result:

ok 5 tokens

Test #17:

score: 4
Accepted
time: 15ms
memory: 29468kb

input:

5
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd...

output:

2414715183
2414053265
3498760311
2415418741
2412193453

result:

ok 5 tokens

Test #18:

score: 4
Accepted
time: 54ms
memory: 52296kb

input:

5
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu...

output:

14044909130
13758605640
8021703699
4927122703
9489413350

result:

ok 5 tokens

Test #19:

score: 4
Accepted
time: 41ms
memory: 51428kb

input:

5
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:

14044820948
13781146461
7453935828
4673360128
9488558416

result:

ok 5 tokens

Test #20:

score: 4
Accepted
time: 50ms
memory: 51320kb

input:

5
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr...

output:

14044830602
13805450160
7984918891
4873659736
9491430029

result:

ok 5 tokens

Test #21:

score: 4
Accepted
time: 40ms
memory: 51276kb

input:

5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

14044823925
13789617860
7597752918
4978465106
9490927685

result:

ok 5 tokens

Test #22:

score: 4
Accepted
time: 478ms
memory: 283224kb

input:

5
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss...

output:

903628883069
902178522904
467114641327
305284235317
620652587747

result:

ok 5 tokens

Test #23:

score: 4
Accepted
time: 496ms
memory: 283224kb

input:

5
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...

output:

903629704237
901055755987
504315438243
304698187610
620653531389

result:

ok 5 tokens

Test #24:

score: 4
Accepted
time: 614ms
memory: 283300kb

input:

5
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...

output:

904243010503
904253960505
904235088477
667900329073
904248230739

result:

ok 5 tokens

Test #25:

score: 4
Accepted
time: 588ms
memory: 283300kb

input:

5
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh...

output:

904261912252
904260123920
904263261760
667900331468
904241569561

result:

ok 5 tokens

Extra Test:

score: 0
Extra Test Passed