QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#599768#8954. 一般路过串串题Xun_xiaoyao85 67ms262900kbC++202.9kb2024-09-29 10:31:402024-09-29 10:31:40

Judging History

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

  • [2024-09-29 10:31:40]
  • 评测
  • 测评结果:85
  • 用时:67ms
  • 内存:262900kb
  • [2024-09-29 10:31:40]
  • 提交

answer

#include <bits/stdc++.h>
#define Mod 1000000007
#define getchar() ((p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2))?EOF:*p1++)
char buf[1<<20],*p1=buf,*p2=buf;
using namespace std;
int get_str(char *S)
{
	int len=1;
	do S[1]=getchar();while(S[1]<'a'||S[1]>'z');
	do S[++len]=getchar();while(S[len]>='a'&&S[len]<='z');
	return len-1;
}
inline void add(int &a,int b){a+=b;if(a>=Mod) a-=Mod;}
inline void del(int &a,int b){a-=b;if(a<0) a+=Mod;}
inline int chk(int a){return a<0?a+Mod:a;}
char S[500010],T[500010];
int lenS,lenT;
int sum2[500010],ssum2[500010],ans;
namespace SAM{
	struct Node{
		int link,len,nxt[27];
		int cnt[2],sumy;
	}s[2000010];
	vector<int> son[2000010];
	int poi_cnt;
	void reset()
	{
		for(int i=0;i<=poi_cnt;i++) vector<int>().swap(son[i]);
		memset(s,0,sizeof(s));poi_cnt=0;
		s[0].link=-1;
	}
	int ins_nd(int las,int nw)
	{
		int cur=++poi_cnt;
		s[cur].len=s[las].len+1;
		int p=las;
		while(p!=-1&&!s[p].nxt[nw])
		{
			s[p].nxt[nw]=cur;
			p=s[p].link;
		}
		if(p==-1) s[cur].link=0;
		else
		{
			int q=s[p].nxt[nw];
			if(s[p].len+1==s[q].len) s[cur].link=q;
			else
			{
				int clo=++poi_cnt;
				s[clo].len=s[p].len+1;
				s[clo].link=s[q].link;
				memcpy(s[clo].nxt,s[q].nxt,27<<2);
				while(p!=-1&&s[p].nxt[nw]==q)
				{
					s[p].nxt[nw]=clo;
					p=s[p].link;
				}
				s[cur].link=s[q].link=clo;
			}
		}
		return cur;
	}
	void dfs(int a,bool op)
	{
		for(int v:son[a])
		{
			dfs(v,op);
			s[a].cnt[0]+=s[v].cnt[0];
			s[a].cnt[1]+=s[v].cnt[1];
			add(s[a].sumy,s[v].sumy);
		}
		if(a)
		{
			int tmp=0;
			if(op)
			{
				add(tmp,1ll*(s[a].len-s[s[a].link].len)*s[a].cnt[0]%Mod*sum2[lenS]%Mod);
				add(tmp,1ll*chk(ssum2[s[a].len]-ssum2[s[s[a].link].len])*s[a].cnt[0]%Mod);
			}
			del(tmp,1ll*(s[a].len-s[s[a].link].len)*s[a].sumy%Mod);
			add(ans,1ll*tmp*s[a].cnt[1]%Mod);
		}
	}
	void calc(bool op)
	{
		for(int i=1;i<=poi_cnt;i++) son[s[i].link].push_back(i);
		dfs(0,op);
	}
}
int cur;
int main()
{
	lenS=get_str(S);
	lenT=get_str(T);
	
	for(int i=1;i<=500000;i++) sum2[i]=1ll*i*i%Mod;
	for(int i=1;i<=500000;i++) add(sum2[i],sum2[i-1]);
	for(int i=1;i<=500000;i++) add(sum2[i],sum2[i-1]);
	
	for(int i=2;i<=500000;i++) ssum2[i]=sum2[i-2];
	for(int i=1;i<=500000;i++) add(ssum2[i],ssum2[i-1]);

	SAM::reset();cur=0;
	for(int i=1;i<=lenS;i++)
	{
		cur=SAM::ins_nd(cur,S[i]-'a');
		SAM::s[cur].cnt[0]=1,
		SAM::s[cur].sumy=sum2[i-1];
	}
	cur=SAM::ins_nd(cur,26);
	for(int i=1;i<=lenT;i++)
	{
		cur=SAM::ins_nd(cur,T[i]-'a');
		SAM::s[cur].cnt[1]=1;
	}
	SAM::calc(true);

	SAM::reset();cur=0;
	for(int i=lenS;i;i--)
	{
		cur=SAM::ins_nd(cur,S[i]-'a');
		SAM::s[cur].cnt[0]=1;
		SAM::s[cur].sumy=sum2[lenS-i];
	}
	cur=SAM::ins_nd(cur,26);
	for(int i=lenT;i;i--)
	{
		cur=SAM::ins_nd(cur,T[i]-'a');
		SAM::s[cur].cnt[1]=1;
	}
	SAM::calc(false);

	printf("%d\n",ans);
	return 0;
}

详细

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 31ms
memory: 259744kb

input:

aababbabbaaabaabbaabaabaabbabbabbbbaabbbbaabaaabababbabbbaaa
bababaabbbbabbbbbabbbbaabbaabaaaababbaaaabbbaabbaabbbbabbaba

output:

496507152

result:

ok "496507152"

Test #2:

score: 10
Accepted
time: 35ms
memory: 259740kb

input:

eececaecacbeabdeeaccdbbebbabddecebdcdebdbccbbddaaaeedaaebcdb
acdaabeaaaeeedcadcaeeaaeaaeeceaebbedcadaaebaaaaddbeedeeabaea

output:

580397857

result:

ok "580397857"

Test #3:

score: 10
Accepted
time: 35ms
memory: 259796kb

input:

fcdfggfggcbedeccchceggdfedgecghhacegbbehegdhcgbefdadbeaghgcc
ebbeegcfhhedfhchfdechefaafgaeacacdfgbhdbghedghdechgbdecebaef

output:

380084227

result:

ok "380084227"

Test #4:

score: 10
Accepted
time: 38ms
memory: 259796kb

input:

boodjlblcmmbdiejhhfcomlcingbgkhhifkbalmchidkbidipjkofgandgoj
afaikkjkfgnmoagpikiidcgiigfmmdfmjgedanogdlccljbedjmgmcoeidae

output:

171472585

result:

ok "171472585"

Test #5:

score: 10
Accepted
time: 57ms
memory: 259724kb

input:

ksadeedmbrojirllkmtrkdhofjgjetrojrkfnnrhceqkbhnllfanahhgiohm
ffsooatinippmdrfcdiniihahospagtflklfkknqlidddnbfqjtesgqfmpnn

output:

122853177

result:

ok "122853177"

Test #6:

score: 10
Accepted
time: 44ms
memory: 259792kb

input:

tqqeyqzvmvdnrgbdtwezhvpxjehcpehiwxoxnpsakxpedqhzmnywjovuucwj
idthdhgqwasjxincaubpjclssinmnlxxrqeuxkmvkfejpropnrextrrlcgxp

output:

113266102

result:

ok "113266102"

Subtask #2:

score: 20
Accepted

Dependency #1:

100%
Accepted

Test #7:

score: 20
Accepted
time: 39ms
memory: 259768kb

input:

aaababbbbbbaabbbbbbabbbabbabbbabaaaabbabbbbbaabbaaabbbbaabbabbbbaabbbbaaabababaababaaabaaaabaaaaabbbbaabbaabbbbabaabbbabaaaaaaaabbaabaabaaabbabbababbaabbabbabaaaaaaaababbbababababaaabbaabbbbbabbababbbaabaababbbabbbbaaabbbababbbbaaabaababbbaabbabaabababbababaaaaabaaaabbabbbbbabbbaaabbababbabaaaababab...

output:

520547094

result:

ok "520547094"

Test #8:

score: 20
Accepted
time: 43ms
memory: 259872kb

input:

adcbdbecdaabaecdaadbbceecedbeababddbcedaeabceaabcbdadcebdaedaaadbdeaccceaabbaddeebaddebebcceeccccccbbeabbbdbcdbbedbeeeabdcadbcaabacabcbdbbbdeebacdccecddcabdcdebdbbaaeabbbbcbdadbccaecdbcbccaddabbcbacadebdcedccaadbcdacaeeccecdcabcebddabcebaedccebcbdeaebcabccdbccecdedabecaebeddbcddcdbcacbacccaceadeceac...

output:

782266849

result:

ok "782266849"

Test #9:

score: 20
Accepted
time: 28ms
memory: 259868kb

input:

baecgaafgfbdfffcgbffdadabbchacebcadaadghahcgehacafhdfcdgefgehcfbdacdeacehecddcfdaegfgbecgcgfedhhebdabfeachdfbabbehhcbdfhfdfbhebdfedgbhgdgbbabcbfbahcdecaahchddcahfgaeeedffdghedafcdahfbhedghgahffffbbbegghefehgbbbbagchcffbdfaacfgeghaegaadehbfacgbabacggdcddcgaacgaccgccbgbddcfcdgddabbedfhgdagfgghbecdgafb...

output:

367143412

result:

ok "367143412"

Test #10:

score: 20
Accepted
time: 27ms
memory: 259864kb

input:

hdnhnmolcjkclidbagdicfpnpjfohpgodegaaelcofejnhkonngpdgmcpbagbgfeklekppmneahbhbpepgecmaelcebdkghfblpbkmoomfpehpigfmibnmmpanckejpfepgolfmhkllbkehpapanlmmlkogohfdlekjppfhjbcllgclhclenibjcppahedcjnmimbpgccboidjpfeedmfmoelolpcoipkbmlacocdmlgfkmjopgdleigddffboelpahpcfcfbnmghipghfjckbinfncglgckhjkjomppjlfa...

output:

661539752

result:

ok "661539752"

Test #11:

score: 20
Accepted
time: 31ms
memory: 259880kb

input:

bcslnfnhcghmeifrrqjktgkhenisgkeheckktpjcbqgrelonaqetcgsslgqrimqmgscsndaptsepcljchfnbllloradfmljljejchbjhtoobfdpeiirllifiiifblhmalnpsoernkehhhclidalojjprjmkbtobkhibbnshpcgpciscdtnsiofferqfrkstkhadmlchfichjbbmmhcabhfffncoqbngigbaretcmocbhdgtkiteiqjfcmlsneqncrftbeogsqtrlfqoghsgehdgloqqkmjnboeplsbbgatss...

output:

507358998

result:

ok "507358998"

Test #12:

score: 20
Accepted
time: 36ms
memory: 259776kb

input:

vkypxiucqbsajxealvcbnymcevlaehbzrbqqjlsbomczkiaxdeatfoxjjkkotnpmogcatvbhjfhvojstpsmujlesvqgqfyctefvxczglenhsyboowcifooxlggcleehklchnbpbificdlqthteohsmubuwmadtkowtezifjnpmtcemkxsyglmbmizaieuutsnztygdnvpgztvjtnkbaycojepriloddbcwbibpfsxfouqhkcikdnbmtsdbfthivlgywkpdcpkqjdxtfigixjwqbctgvcqqoyrkignlvabhdb...

output:

138681994

result:

ok "138681994"

Subtask #3:

score: 30
Accepted

Dependency #2:

100%
Accepted

Test #13:

score: 30
Accepted
time: 35ms
memory: 260228kb

input:

abababbbbaabbbaabaaababbabaaababababababbababbbabbbbbaabbababababbbbababbbabbbbaaabbbbbaaaababbbaaaabbabaaabbbabababbbbbaaaabaaaaaaababaabbbabaabbbaabbabbbabbaabbabbbbaaabaaabbbabbbaaabbbbabbbabaaabaaabaabbbaaaabaaabbbababababbaabaaabaaabaabaabaabbbbabbbababaaaabbbbbabbaaaaaaababaabbbbbbbbabbbababbb...

output:

775805062

result:

ok "775805062"

Test #14:

score: 30
Accepted
time: 27ms
memory: 260016kb

input:

dadbaeeadbddeddcebeeadbacdcabebcebdcbeebcceccebbbccdaadeaaaebbbcabeddaeacbecccadeadaabbbdbabadeabaaebeaacecacdabdedacadbddcaddaaececebcbbcbacebcdccaebdcbddabacaddecacdbbcbdbeabdcbcacacaaebabeabdcbcdedccbacdbcdeadbccbcbdcecabcceacedebceaacddcaedcbaeaadbedebdedaaccdbdedbeededbbbdcddcaebbbbcbdcaabbecac...

output:

130828441

result:

ok "130828441"

Test #15:

score: 30
Accepted
time: 28ms
memory: 259916kb

input:

aecdgaeegafcgfdbbbghfheghchdabcbfeedfbadbffhcbadchchghgfbfacgcddhhheahhbeebgfbbhadhgcfeecegahbdgaccbbbcffdddfecfabecgagaeeadfebggdhaebfcfbfcfhhfbdahdgaadadaefgdafdfhahebeghdfeebeeedeegeagbffefchcbhbfbfdabbefcbbgefdccdadafhfagabfbhghcgaddffeheaehcgccbcaahaghbebacadbagefeaeaabhchbebdebceacgedggdbhdada...

output:

97380744

result:

ok "97380744"

Test #16:

score: 30
Accepted
time: 39ms
memory: 259908kb

input:

pblokjmgoadcmjkfmomjmaekljffdmbcnmbhfnndnbfjkaogokpkkdegmjlpfmbcjcjopgcmhhfbhehfogpjjdpfmkebggdpimoidaekhkmpodemkefdhejeonffdjemfceicidkcpjacnnmbcajhjnfgckklpgbbkjecmoflhfoeckgfkpmdmbkomeklklmeeagbolmfbkkdfaippedlgnjcbdnlojpdkfeibaoclifaiophccciplkaphlnbkalaedbfbdajiabgpijckbbgmcfdnceidpihdjmemmoemp...

output:

602469189

result:

ok "602469189"

Test #17:

score: 30
Accepted
time: 31ms
memory: 259948kb

input:

bcanoaimlmscgbdkdptbcsoacfqbjkfcegpsgplrtblfogqrbpkenrehcnamdggtmcskjbtjccoiicfjrqfcfcbhpclkisjmmhobancohrcptiqjqcdbqfaltmbhkclocfpcksrjhleslmthgdacabntngspbbjdsqrigojnsfejrdregjsscmrhkhclidggaegskpmiaisslhokimilqsstfncgqjmifthpglqhtgrkflmnpnqmlhdiafoigtrlkqtqhhdsnmakpnplgmpjtsrldetkdinnembdtrnejoof...

output:

640668306

result:

ok "640668306"

Test #18:

score: 30
Accepted
time: 36ms
memory: 259968kb

input:

gkyjquqqernkdsxsifohrnklzzxnikoounxmjpcnirxmjueucsdtipehodwwplmlalxjabwjsvvesbyuvbpdtvmhajeqwsbyebhecfpvambsnzmlcdovydfzojrkdskhvroywdvyswrfvfszljxjmckanbmqwwyrpopntkllietdklfvucgierkruwhsuhkjvbwpoicwmvcyhhvdlcmpvwirvrkpzwzwzvnpfqmslqsuzoyksmbpkjgfasvbqwyqrnfzdttrlllkbjwtxxkigrnjlkkcgisawzzbtssgferh...

output:

242076649

result:

ok "242076649"

Subtask #4:

score: 25
Accepted

Dependency #3:

100%
Accepted

Test #19:

score: 25
Accepted
time: 67ms
memory: 262900kb

input:

abbabbbaabbabbaaaababbbabbbbbaabbbbaabaaabbabbabbababaabbbabbbaaaabbbbbbbabababaaaabaaaaabbbabaabbbaababbbbbbabbaabbabbaaaaababbbabbbbbbbaaabbabbbaaababbabbaaabbbbababaababbababbaabbbabababbbabaaaaaabbaaabbbabbaaabaaaaabbbbaabaababbbababaaaabaaabaababaaabaababaaabaabbabaaaabbbbbaabbabaabbabbabaabbaa...

output:

743975419

result:

ok "743975419"

Test #20:

score: 25
Accepted
time: 47ms
memory: 262012kb

input:

dadbceeaceadceeceeedceceadbccceaceeaadaceaabeaaabaddecaebbcddddbecdecacdcecdbcddccdeeddcecaacedbdbbdbabaedddbbbaabecaaebeabcbeaecdcadbaaeddcabdaccceecbeecdaeabbeeeeaebbaeeaccccbcbdbceaccabebedcdaeabbadacaeeccbeacdeeadedabdaadaadebdcdaeecedaaeadaebbeebcebcdcebbccaceebbdacabcedbaecbabbcbebacedeeceaecb...

output:

950379326

result:

ok "950379326"

Test #21:

score: 25
Accepted
time: 45ms
memory: 261792kb

input:

eeghdafhfgadahfdccfehbbabhhfeceahcacdfcadcddbaheceabfbcgabefdafccfffchfgbabcaagcegechgaahefcecfhacecbcacccedcdfhbbbbhbbgggbcagbaagdbaddcfhfacdheeafebgchedcebdfbbacbdfebfbbheadbaafbghbcddhegegaeabhgfadhbcdbgebgbdfbehehgafcgfghhgfegadachbaddhfgegcdcbccgebedadbfhhfdhhcbafehccdaegcfafdfghagcbdcaafahhbhe...

output:

173737384

result:

ok "173737384"

Test #22:

score: 25
Accepted
time: 48ms
memory: 261512kb

input:

hibgeiodleahonhcoknbamcdjaembbgjkipoaoblcbdaokcmfpoflaiebnacohliplgpjhlliomhiodnobcjclodiofgfbpemfefnpafnmmfladjbfcdaagipmpenojjdnoamogjlcogcbpehbhhcoabkpfhnoaalobhmhahjpnmamahohpafpbpogglfglaemibdiinhgjicjpaaoagnbflimgnccnhoficoapfginjbnjblkhjlnedjlalnocldknblmhbeekfbehnoogjlknefnaclcopnlaiihjmmecn...

output:

836988517

result:

ok "836988517"

Test #23:

score: 25
Accepted
time: 46ms
memory: 259648kb

input:

sgqtkkjnsmjoacqqnidrmlonqeannkedimckddebhnhthdpbelkqcecsbcloehrnaldphtiofqomljfpmqeomsenmqtqpqjpafchelbjtpccrtsjpoqamaneifmebclnhoadrcnqjhssgiiocqogqtcrepbsrelqkmlhgqppdoocooqjccpsbkhsfiqofhcplnprkkffqlhdrpmtrtrljfjoffaceckqqffshkdqbdtssdjqohteeikbfdqjfgrndplcfhstkjjietqtsppopfhaidcgbtteodhmkfdahmil...

output:

72880325

result:

ok "72880325"

Test #24:

score: 25
Accepted
time: 48ms
memory: 261540kb

input:

vroqptfrssjnqoungjzfrdlzobofwvgtpxmeqrxkjhxcvsrebsjvvwulxlrwizpxwbcnvbxgivignbkqtvlrriepvvldvcdtghgbighrdszqtlipgwgxekobizgfejykqhlznusqoriieqzkmhjstytbzagdlhncoaddxvtlobtstucibnavlwylyhqjoglegohdlapzdktyhxgiljfwfejflaobgcfosmueolftvzrcwanhjsgqypvjrjkznrogdkmrvrmssexrgkapegfdyaoplbpzsffwptpkkccfizwq...

output:

307364626

result:

ok "307364626"

Subtask #5:

score: 0
Time Limit Exceeded

Dependency #4:

100%
Accepted

Test #25:

score: 0
Time Limit Exceeded

input:

aaaaababababbbbbbbaaaaaaabababbbabbaabbbbbaabbaabaabaababaaabbbbbabbbbaaaabbababbaabbaaaaaabbbbabaabbabababbbbaaaaabaabaaaabbbabbaababbbaaabaaaababbaaaaaababbbabbbaaababaabaabbaabaababbbbabaaabaabaaabaaaaabaabbaaaabbbabaabbbbbaababbaaaabaabbabbaaaaabaaabbabbaaabaababbabababaabaabbbbbaabbbbabbaaaabba...

output:


result: