QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#482723#4224. 串yqh2025100 ✓310ms189512kbC++141.7kb2024-07-17 20:55:052024-07-17 20:55:05

Judging History

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

  • [2024-07-17 20:55:05]
  • 评测
  • 测评结果:100
  • 用时:310ms
  • 内存:189512kb
  • [2024-07-17 20:55:05]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=5e5+10;
int n;
namespace SAM{
	struct hzzdj{
		int len,father,son[30];
	}hz[N<<1];
	int tot,last;
	int mi[N<<1],siz[N<<1];
	vector<int>E[N<<1];
	void init(){
		// memset(mi,127,sizeof(mi));
		for(int i=0;i<=tot;i++){
			hz[i].len=hz[i].father=0;
			memset(hz[i].son,0,sizeof(hz[i].son));
			siz[i]=0;mi[i]=N+10;
			E[i].clear();
		}
		tot=0;last=0;hz[0].father=-1;
	}
	void insert(char ch,int i){
		int cha=ch-'a',p=last;
		int cur=++tot;hz[cur].len=hz[p].len+1;
		mi[cur]=i;siz[cur]=1;
		while(p!=-1&&!hz[p].son[cha]){
			hz[p].son[cha]=cur;
			p=hz[p].father;
		}
		if(p==-1)hz[cur].father=0;
		else{
			int q=hz[p].son[cha];
			if(hz[q].len==hz[p].len+1)hz[cur].father=q;
			else{
				int nq=++tot;hz[nq].len=hz[p].len+1;
				mi[nq]=N+10;
				hz[nq].father=hz[q].father;
				hz[q].father=hz[cur].father=nq;
				memcpy(hz[nq].son,hz[q].son,sizeof(hz[q].son));
				while(p!=-1&&hz[p].son[cha]==q){
					hz[p].son[cha]=nq;;
					p=hz[p].father;
				}
			}
		}
		last=cur;
	}
	void dfs(int u){
		for(int v:E[u]){
			dfs(v);
			mi[u]=min(mi[u],mi[v]);
			siz[u]+=siz[v];
		}
	}
	int sol(){
		for(int i=1;i<=tot;i++)E[hz[i].father].push_back(i);
		// for(int i=0;i<=tot;i++)cout<<mi[i]<<" ";cout<<endl;
		dfs(0);
		int ans=n/2;
		for(int i=1;i<=tot;i++){
			if(siz[i]>=2&&mi[i]!=N+10){
				// if(hz[i].len+(n-mi[i])/2==28)cout<<hz[i].len<<" "<<mi[i]<<endl;
				ans=max(ans,hz[i].len+(n-mi[i])/2);
			}
		}
		return ans;
	}
}
char ch[N];
void sol(){
	SAM::init();
	scanf("%s",ch+1);n=strlen(ch+1);
	for(int i=1;i<=n;i++)SAM::insert(ch[i],i);
	printf("%d\n",SAM::sol());
}
signed main(){
	int t;cin>>t;
	while(t--)sol();
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 5
Accepted
time: 3ms
memory: 29916kb

input:

5
wwgpdvdwwgpdvdwwgpdvdwwwvdwdww
imeoqomeomqomeommeoqomeomqomem
blmjcxblmjcxlmjlmjcxjcxblmjcxl
exzhdyzhddyzhdedyzhyzhddydyyzd
tsbosqtsbosqtsbossbosqtssqtsbb

output:

23
21
18
15
20

result:

ok 5 lines

Test #2:

score: 5
Accepted
time: 0ms
memory: 29544kb

input:

5
rmgmlkgmlkllklmlkgmgmlklklmlkm
fstnttfttfnttfttfttfttfttttftt
hxiykziykzixiykziyykzixiyiyyky
fbtnfwbtnffwbfbtnfwbtnffwwbtnw
yhdizazyhdidihdidihdizzazyyhdi

output:

17
17
18
21
17

result:

ok 5 lines

Test #3:

score: 5
Accepted
time: 6ms
memory: 31212kb

input:

4
skjnitkwybtcsfagbpslfxtijbwjqvskibxqwjmukwybtcsfagbbpslfxtijbwjqvskibxqwjmukwybtcsfagbpslfxtijbwjqvskibxqwjmukwybtcsfagbbpslfxtijbwjqvskibxqwjmukwybtcsfagbbpslukwybtcsfagbbpslfxtijbbbpslukwybtcsfaslfc
ssrpyzpwiydtayxmoddtqksdrhcavtsonldnmujuyzpwiydtayxmoddtqksdrhcavtsoniydtayxmoddtqksdrhwiydtayxmo...

output:

137
112
121
112

result:

ok 4 lines

Test #4:

score: 5
Accepted
time: 0ms
memory: 29484kb

input:

4
oupltnlcbcgntpnkbvktcbcpltnlcbcgpltnlcgpltngntpnlcbcgntpnkbvktcbcpltnlcbcgpltnlnlcbcgpltnlcgpltngntpnlcbcgntpnktngntpnlcbcgntpnkbvktcbcpltnlcbcgpltnlnlcbcgpltnlcgpltngntpnlcbcgntpnlcbcgntlcbcgntpnkbvn
nzmyzhhsoehahmorxpahsoehahmororxpahsoehahmhsoehahmmyzhhsoehahmhahsoehahmororxpahsoehahmhsoehahmmy...

output:

114
130
117
113

result:

ok 4 lines

Test #5:

score: 5
Accepted
time: 0ms
memory: 29588kb

input:

4
wwsqbwicfggaflmvdvegdkclrnybwwsqbwicfggafgdkclrnyaflmvdvegdkclrnybwwsqbwlrnybwwsqbwicfggafgdkclrnyaflmvdvegdkclrnybwwegdknybwwsqybwwsqbwlrnybwwsqbwicfggafgdkclrnyaflmvdvegdkclrnybqbwicfggafgdkclrnyafg
tgloxggsznuxqxggszxggszsznuxqxggszxggszggsznuxqxggsggsznuxqxggszxggszsznuxqxggszxggszggsznuxqxggs...

output:

111
120
112
106

result:

ok 4 lines

Test #6:

score: 5
Accepted
time: 7ms
memory: 31036kb

input:

3
ikcblmcsjillvojwymeimbaeipbhobwwnyaakcsvkghhusduehctjexrtaakewiruishkmewsleodhikrnfaternerxiqhamqutaiazbldrrmaddpidimwxsqwbgedswzowhovibaauncxsthwdvudokzpsfulbtbaapxlexrtaakewiruishkmewsleodhikrnfaternerxiqhamqutaiazbldrrmaddpidimwxsqwbgedswzowhovibaauncxsthwdvudokzpsfulbtbaapxlidimwxsqwbgedswzowh...

output:

638
610
568

result:

ok 3 lines

Test #7:

score: 5
Accepted
time: 3ms
memory: 30776kb

input:

3
gsxasrisfpretvfhxlwnysaarwkvizqrrntjecdltvqmsvvqgsdgkggdcszmtrfkfzwldzxnysgsxasrisfpretvfhxlwgsxasrisfpretvfhqrrntjecdltvqmsvvqgsdgkggdcszmtrfkfzwarwkvizqrrntjecdltvqmsvvqgsdgkggdcszmtrfkfzwldzxnysgsxasrisfpretvjecdltvqmsvvqgsdgkggdcszmtrfkfzwldzxnfkfzwldzxnysgsxasrisfpretvjecdltvqmsvvqgsdgkggdcsz...

output:

582
591
547

result:

ok 3 lines

Test #8:

score: 5
Accepted
time: 6ms
memory: 30844kb

input:

3
aekaabidsppfvwzguexdmycjcqqcxdmycjcqqycjcqexdmycjcqqcxdmycjcqqcxdmycjcqqycjcqevwzguexdmycjcqqcxdmyabidsppfvwzguexdmycjcqqcxdmycjcqqycjcqexdmycjcqqcxdmycjcqqcxdmycjcqqycjcqezguexdmycjcqqcxdmycjcqqycjcqexdmycjcqqcxdmycjcqqcxdmycjcqqycjcqevwzguexdmycjcqqcxdmyxdmycjcqqcxdmycjcqqycjcqexdmycjcqqcxdmycjc...

output:

539
563
520

result:

ok 3 lines

Test #9:

score: 5
Accepted
time: 230ms
memory: 110592kb

input:

4
fqbsybwtrauafctwxtzxmhmelxssvxxapauncqgvqcwxfptcktzyanenlxfguejjhdzjufgmicmptfrfasgcgkqrjxzfcipjoqukvawffkuaqniqgotoylhiignmrevhwrruupzzawbqljitxdhyooixxxlqejxaaouufwvfuzxhigbilkiazqzypkovtnwwbssiqookpnsxvvhhfpjghkezwuushsoilgtbwholuilqdszikiptsvuoqpgxhwisfbwbkkpesawxuvhgfycxuwoklwjvtrpaulbexqlrsh...

output:

187457
187894
187356
187301

result:

ok 4 lines

Test #10:

score: 5
Accepted
time: 99ms
memory: 54012kb

input:

105
iiqnrmmdztbfxwmieuflzvuqveboseucomrfagkbzohyktiqnnbpkyhgciuwoqacerjgxthwjqxtkfjzvnqfnxlpfhnvznxfeglecvcllzhxhszcfphsnvjuewqelnlswxwauylfaufhnejutsngnybuxtaiglaekyeexsmxmrezvpuohjxxjatgttrbetirsmvrehqtawuvlqmuzltllmtgfmjmgrdagytkijfkfagsqumsfidsuyyclhotbrvhrotbzzmgbuyromlvuqnrpntauhvxaqereyvfzjla...

output:

5001
5001
5001
5001
50001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5002
5001
5001
5001
5001
5001
50001
5001
5001
5001
5002
5001
5001
5001
5001
5002
5001
50001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
5001
50...

result:

ok 105 lines

Test #11:

score: 5
Accepted
time: 191ms
memory: 125884kb

input:

1000001
s
o
k
g
r
z
l
d
z
i
n
u
d
j
i
o
k
b
o
s
h
y
w
y
u
k
v
p
d
f
e
x
v
q
d
o
p
r
s
o
z
f
i
e
r
q
s
b
u
i
w
b
g
u
b
a
e
w
p
j
e
v
g
z
l
l
o
c
c
i
q
b
n
b
h
g
t
z
i
p
h
e
s
q
a
u
s
e
s
i
n
w
f
t
y
t
g
o
v
j
w
o
m
l
r
u
s
k
t
c
c
d
i
u
t
i
q
l
m
j
v
b
f
d
w
f
w
c
t
r
l
p
h
y
b
y
u
v
l
n
x
n
s
f
j
n
...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
...

result:

ok 1000001 lines

Test #12:

score: 5
Accepted
time: 23ms
memory: 38100kb

input:

110
rxxioshkbndigoxntdcejhvoskbndigoxntdcejgoxntdcejhvoskbndigoxbndigoxntdcejhvoskbndigoxntdccejhvoskbndigogoxntdcejgoxntdcejhvoskbndigoxbnejgoxntdcejhvoskbndigoxbndigoxntdcejhvoskbndigoxntdccejhvoskbndigogoxntdcejgoxntdcejhvosxntdcejhvoskbndigoxbndigoxntdcejhvoskbndigoxntdccejhvoskbndigogoxntdcejgo...

output:

629
577
663
560
622
537
11746
11759
625
966
595
537
989
567
539
544
578
562
536
600
572
521
19986
979
952
597
632
957
552
605
980
535
566
559
963
12740
629
548
571
988
641
14356
558
571
598
982
539
645
580
586
967
995
966
597
623
961
589
988
594
582
638
606
11243
954
604
558
588
579
559
627
547
590
...

result:

ok 110 lines

Test #13:

score: 5
Accepted
time: 29ms
memory: 46320kb

input:

105
jlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizovzbjlugzbdizo...

output:

993
674
578
520
563
621
39987
623
562
551
650
631
541
598
976
663
578
600
984
556
652
996
560
596
672
964
684
972
613
990
596
551
39989
592
579
552
971
587
958
976
640
641
650
967
997
570
591
523
644
571
951
598
645
601
670
556
536
663
596
719
26336
581
618
658
544
662
22008
633
979
540
677
539
965
...

result:

ok 105 lines

Test #14:

score: 5
Accepted
time: 31ms
memory: 57944kb

input:

5
xsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmnxsolriymnoxsmn...

output:

59993
31805
31649
59999
35053

result:

ok 5 lines

Test #15:

score: 5
Accepted
time: 17ms
memory: 34444kb

input:

30
qqgcvqshumzfapruaztsztbkdhknlqmegsgekylgmkmobfjceeuezxqcebpqrduyxccjcpqqbefdlqfpubvvymxfnovetrestidxxvnbzsekilcemxbmjaryqofjfjdashxrclsefyqqjswxsykbydcrshczqgaknzermwvsvmkgegeygqahteynlandipovosnbqkvnwfudnabuqddlhbzsdowmfmjtgywwjtmhaikoimkapplzsmrxcpjhdvdjtbievwmxewlokxocobbgoueqkpypkdzgejmzfyxjx...

output:

5409
6422
9965
6171
9985
5656
6137
9965
5246
5788
6213
5511
9988
9994
9991
6384
9982
6431
9993
5763
6489
5902
5343
5847
5849
6573
5863
5737
6460
6527

result:

ok 30 lines

Test #16:

score: 5
Accepted
time: 310ms
memory: 189512kb

input:

3
pounzdtkokaonqyllykjhhycqxdmmwndkjqlnlxbwzqlpqwcpjnysncilfxzdkenuwbjhakfacsptrukajksxnbksyjykplglopupccpgugzlcllmwgjjhtdhebttpcgfrcuvelczudmyrakngvypqdyufrpwtxbnaykelodhusglsqayoypebnzigqgcokrokbuvsadmsjzkbzkpzzucovnwltyzdrpnvmlnmqbezaqazcsybmcrhpnsjouofleczrplhqrgqhirjarmoudvjtqsjmjqzptzgimnbetrl...

output:

283790
303401
286117

result:

ok 3 lines

Test #17:

score: 5
Accepted
time: 136ms
memory: 113624kb

input:

36
bqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrgxpbqsaqunccgyiarpeaezrg...

output:

49988
10658
28088
11977
49994
11321
13086
49974
12836
31204
11573
30769
29147
10648
12611
11999
49983
499970
13419
11724
19956
19953
29731
11345
12438
12680
19973
12970
19992
19986
30847
11087
10522
11308
10609
12006

result:

ok 36 lines

Test #18:

score: 5
Accepted
time: 179ms
memory: 175940kb

input:

36
ueuhiuuxbkqmcjrkbkknbuogliigucooglvofroicgveqoqtacgcwukjfuszwgpermvydlhfreljsdcuhkwdfgpmbhlznaefmbfrmmzdsmpmqrhxcddjmsvpziookuvyvbpjpqnideuvvbuzhxktrhkspahzvczsdpcvfrdkvxfszauizebrmljdlsfixedavhxbyalvyrpztjhsqkleljsdcuhkwdfgpfreljsdcuhkwdfgpmbhlznaefmbfrmmzdsmpmqrhxcddjmsvpziookuvyvbpjpqnideuvvbu...

output:

11223
11643
12012
19963
12651
31459
14468
28087
33112
19974
19950
19997
49982
49993
13154
19962
277645
10927
49970
12457
29707
26432
11485
11694
19977
12699
13358
19973
10948
11629
29009
19964
27385
12772
11344
10920

result:

ok 36 lines

Test #19:

score: 5
Accepted
time: 115ms
memory: 120148kb

input:

400001
ggg
eee
hhh
ppp
eee
nnn
hhh
aaa
nnn
uuu
xxx
ddd
ttt
sss
jjj
fff
ccc
ddd
aaa
xxx
vvv
mmm
qqq
bbb
qqq
uuu
bbb
ggg
mmm
qqq
ccc
hhh
nnn
yyy
hhh
qqq
fff
www
xxx
uuu
iii
ggg
nnn
rrr
sss
aaa
eee
vvv
iii
eee
vvv
www
qqq
ddd
qqq
rrr
qqq
xxx
ppp
yyy
nnn
bbb
uuu
bbb
yyy
aaa
ttt
www
mmm
lll
qqq
ggg
zzz
b...

output:

2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
...

result:

ok 400001 lines

Test #20:

score: 5
Accepted
time: 257ms
memory: 186048kb

input:

27
xtahmwzugvrelqyihbryeggyvqgliwxirxrdvtxbopgahekrhbpnixmfpuryqqiipznksnljetllzvehwvugsimiffivvsfktvumihxmdixcdelbziiuquevzotugagzvcndjkposprxtczumhoddsacivyowgqridxtqmikdbiyfhtsqhxtczxkvxbtfrknwjiowszbthabqtticsbgratmzufenstlbbczubdpkdqcylkcdnjvnejoarsplnaoocqkftcpwstwgdyjqhgfnstnjncuafkrhadptfgra...

output:

12118
12260
19991
11406
13637
19972
19986
11246
12946
19984
11974
12449
12283
12022
12063
300783
11398
10957
11564
280619
12088
19972
11514
11971
11448
11649
12875

result:

ok 27 lines

Extra Test:

score: 0
Extra Test Passed