QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#599725 | #8954. 一般路过串串题 | Xun_xiaoyao | 85 | 81ms | 306072kb | C++17 | 2.8kb | 2024-09-29 09:57:08 | 2024-09-29 09:57:09 |
Judging History
answer
#include <bits/stdc++.h>
#define Mod 1000000007
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: 39ms
memory: 304628kb
input:
aababbabbaaabaabbaabaabaabbabbabbbbaabbbbaabaaabababbabbbaaa bababaabbbbabbbbbabbbbaabbaabaaaababbaaaabbbaabbaabbbbabbaba
output:
496507152
result:
ok "496507152"
Test #2:
score: 10
Accepted
time: 43ms
memory: 304540kb
input:
eececaecacbeabdeeaccdbbebbabddecebdcdebdbccbbddaaaeedaaebcdb acdaabeaaaeeedcadcaeeaaeaaeeceaebbedcadaaebaaaaddbeedeeabaea
output:
580397857
result:
ok "580397857"
Test #3:
score: 10
Accepted
time: 36ms
memory: 304624kb
input:
fcdfggfggcbedeccchceggdfedgecghhacegbbehegdhcgbefdadbeaghgcc ebbeegcfhhedfhchfdechefaafgaeacacdfgbhdbghedghdechgbdecebaef
output:
380084227
result:
ok "380084227"
Test #4:
score: 10
Accepted
time: 36ms
memory: 305212kb
input:
boodjlblcmmbdiejhhfcomlcingbgkhhifkbalmchidkbidipjkofgandgoj afaikkjkfgnmoagpikiidcgiigfmmdfmjgedanogdlccljbedjmgmcoeidae
output:
171472585
result:
ok "171472585"
Test #5:
score: 10
Accepted
time: 48ms
memory: 304728kb
input:
ksadeedmbrojirllkmtrkdhofjgjetrojrkfnnrhceqkbhnllfanahhgiohm ffsooatinippmdrfcdiniihahospagtflklfkknqlidddnbfqjtesgqfmpnn
output:
122853177
result:
ok "122853177"
Test #6:
score: 10
Accepted
time: 42ms
memory: 304564kb
input:
tqqeyqzvmvdnrgbdtwezhvpxjehcpehiwxoxnpsakxpedqhzmnywjovuucwj idthdhgqwasjxincaubpjclssinmnlxxrqeuxkmvkfejpropnrextrrlcgxp
output:
113266102
result:
ok "113266102"
Subtask #2:
score: 20
Accepted
Dependency #1:
100%
Accepted
Test #7:
score: 20
Accepted
time: 43ms
memory: 304664kb
input:
aaababbbbbbaabbbbbbabbbabbabbbabaaaabbabbbbbaabbaaabbbbaabbabbbbaabbbbaaabababaababaaabaaaabaaaaabbbbaabbaabbbbabaabbbabaaaaaaaabbaabaabaaabbabbababbaabbabbabaaaaaaaababbbababababaaabbaabbbbbabbababbbaabaababbbabbbbaaabbbababbbbaaabaababbbaabbabaabababbababaaaaabaaaabbabbbbbabbbaaabbababbabaaaababab...
output:
520547094
result:
ok "520547094"
Test #8:
score: 20
Accepted
time: 27ms
memory: 305004kb
input:
adcbdbecdaabaecdaadbbceecedbeababddbcedaeabceaabcbdadcebdaedaaadbdeaccceaabbaddeebaddebebcceeccccccbbeabbbdbcdbbedbeeeabdcadbcaabacabcbdbbbdeebacdccecddcabdcdebdbbaaeabbbbcbdadbccaecdbcbccaddabbcbacadebdcedccaadbcdacaeeccecdcabcebddabcebaedccebcbdeaebcabccdbccecdedabecaebeddbcddcdbcacbacccaceadeceac...
output:
782266849
result:
ok "782266849"
Test #9:
score: 20
Accepted
time: 39ms
memory: 304732kb
input:
baecgaafgfbdfffcgbffdadabbchacebcadaadghahcgehacafhdfcdgefgehcfbdacdeacehecddcfdaegfgbecgcgfedhhebdabfeachdfbabbehhcbdfhfdfbhebdfedgbhgdgbbabcbfbahcdecaahchddcahfgaeeedffdghedafcdahfbhedghgahffffbbbegghefehgbbbbagchcffbdfaacfgeghaegaadehbfacgbabacggdcddcgaacgaccgccbgbddcfcdgddabbedfhgdagfgghbecdgafb...
output:
367143412
result:
ok "367143412"
Test #10:
score: 20
Accepted
time: 35ms
memory: 305404kb
input:
hdnhnmolcjkclidbagdicfpnpjfohpgodegaaelcofejnhkonngpdgmcpbagbgfeklekppmneahbhbpepgecmaelcebdkghfblpbkmoomfpehpigfmibnmmpanckejpfepgolfmhkllbkehpapanlmmlkogohfdlekjppfhjbcllgclhclenibjcppahedcjnmimbpgccboidjpfeedmfmoelolpcoipkbmlacocdmlgfkmjopgdleigddffboelpahpcfcfbnmghipghfjckbinfncglgckhjkjomppjlfa...
output:
661539752
result:
ok "661539752"
Test #11:
score: 20
Accepted
time: 40ms
memory: 305184kb
input:
bcslnfnhcghmeifrrqjktgkhenisgkeheckktpjcbqgrelonaqetcgsslgqrimqmgscsndaptsepcljchfnbllloradfmljljejchbjhtoobfdpeiirllifiiifblhmalnpsoernkehhhclidalojjprjmkbtobkhibbnshpcgpciscdtnsiofferqfrkstkhadmlchfichjbbmmhcabhfffncoqbngigbaretcmocbhdgtkiteiqjfcmlsneqncrftbeogsqtrlfqoghsgehdgloqqkmjnboeplsbbgatss...
output:
507358998
result:
ok "507358998"
Test #12:
score: 20
Accepted
time: 40ms
memory: 305244kb
input:
vkypxiucqbsajxealvcbnymcevlaehbzrbqqjlsbomczkiaxdeatfoxjjkkotnpmogcatvbhjfhvojstpsmujlesvqgqfyctefvxczglenhsyboowcifooxlggcleehklchnbpbificdlqthteohsmubuwmadtkowtezifjnpmtcemkxsyglmbmizaieuutsnztygdnvpgztvjtnkbaycojepriloddbcwbibpfsxfouqhkcikdnbmtsdbfthivlgywkpdcpkqjdxtfigixjwqbctgvcqqoyrkignlvabhdb...
output:
138681994
result:
ok "138681994"
Subtask #3:
score: 30
Accepted
Dependency #2:
100%
Accepted
Test #13:
score: 30
Accepted
time: 43ms
memory: 305584kb
input:
abababbbbaabbbaabaaababbabaaababababababbababbbabbbbbaabbababababbbbababbbabbbbaaabbbbbaaaababbbaaaabbabaaabbbabababbbbbaaaabaaaaaaababaabbbabaabbbaabbabbbabbaabbabbbbaaabaaabbbabbbaaabbbbabbbabaaabaaabaabbbaaaabaaabbbababababbaabaaabaaabaabaabaabbbbabbbababaaaabbbbbabbaaaaaaababaabbbbbbbbabbbababbb...
output:
775805062
result:
ok "775805062"
Test #14:
score: 30
Accepted
time: 48ms
memory: 304628kb
input:
dadbaeeadbddeddcebeeadbacdcabebcebdcbeebcceccebbbccdaadeaaaebbbcabeddaeacbecccadeadaabbbdbabadeabaaebeaacecacdabdedacadbddcaddaaececebcbbcbacebcdccaebdcbddabacaddecacdbbcbdbeabdcbcacacaaebabeabdcbcdedccbacdbcdeadbccbcbdcecabcceacedebceaacddcaedcbaeaadbedebdedaaccdbdedbeededbbbdcddcaebbbbcbdcaabbecac...
output:
130828441
result:
ok "130828441"
Test #15:
score: 30
Accepted
time: 51ms
memory: 304740kb
input:
aecdgaeegafcgfdbbbghfheghchdabcbfeedfbadbffhcbadchchghgfbfacgcddhhheahhbeebgfbbhadhgcfeecegahbdgaccbbbcffdddfecfabecgagaeeadfebggdhaebfcfbfcfhhfbdahdgaadadaefgdafdfhahebeghdfeebeeedeegeagbffefchcbhbfbfdabbefcbbgefdccdadafhfagabfbhghcgaddffeheaehcgccbcaahaghbebacadbagefeaeaabhchbebdebceacgedggdbhdada...
output:
97380744
result:
ok "97380744"
Test #16:
score: 30
Accepted
time: 46ms
memory: 305104kb
input:
pblokjmgoadcmjkfmomjmaekljffdmbcnmbhfnndnbfjkaogokpkkdegmjlpfmbcjcjopgcmhhfbhehfogpjjdpfmkebggdpimoidaekhkmpodemkefdhejeonffdjemfceicidkcpjacnnmbcajhjnfgckklpgbbkjecmoflhfoeckgfkpmdmbkomeklklmeeagbolmfbkkdfaippedlgnjcbdnlojpdkfeibaoclifaiophccciplkaphlnbkalaedbfbdajiabgpijckbbgmcfdnceidpihdjmemmoemp...
output:
602469189
result:
ok "602469189"
Test #17:
score: 30
Accepted
time: 38ms
memory: 304592kb
input:
bcanoaimlmscgbdkdptbcsoacfqbjkfcegpsgplrtblfogqrbpkenrehcnamdggtmcskjbtjccoiicfjrqfcfcbhpclkisjmmhobancohrcptiqjqcdbqfaltmbhkclocfpcksrjhleslmthgdacabntngspbbjdsqrigojnsfejrdregjsscmrhkhclidggaegskpmiaisslhokimilqsstfncgqjmifthpglqhtgrkflmnpnqmlhdiafoigtrlkqtqhhdsnmakpnplgmpjtsrldetkdinnembdtrnejoof...
output:
640668306
result:
ok "640668306"
Test #18:
score: 30
Accepted
time: 27ms
memory: 304596kb
input:
gkyjquqqernkdsxsifohrnklzzxnikoounxmjpcnirxmjueucsdtipehodwwplmlalxjabwjsvvesbyuvbpdtvmhajeqwsbyebhecfpvambsnzmlcdovydfzojrkdskhvroywdvyswrfvfszljxjmckanbmqwwyrpopntkllietdklfvucgierkruwhsuhkjvbwpoicwmvcyhhvdlcmpvwirvrkpzwzwzvnpfqmslqsuzoyksmbpkjgfasvbqwyqrnfzdttrlllkbjwtxxkigrnjlkkcgisawzzbtssgferh...
output:
242076649
result:
ok "242076649"
Subtask #4:
score: 25
Accepted
Dependency #3:
100%
Accepted
Test #19:
score: 25
Accepted
time: 81ms
memory: 306044kb
input:
abbabbbaabbabbaaaababbbabbbbbaabbbbaabaaabbabbabbababaabbbabbbaaaabbbbbbbabababaaaabaaaaabbbabaabbbaababbbbbbabbaabbabbaaaaababbbabbbbbbbaaabbabbbaaababbabbaaabbbbababaababbababbaabbbabababbbabaaaaaabbaaabbbabbaaabaaaaabbbbaabaababbbababaaaabaaabaababaaabaababaaabaabbabaaaabbbbbaabbabaabbabbabaabbaa...
output:
743975419
result:
ok "743975419"
Test #20:
score: 25
Accepted
time: 52ms
memory: 305792kb
input:
dadbceeaceadceeceeedceceadbccceaceeaadaceaabeaaabaddecaebbcddddbecdecacdcecdbcddccdeeddcecaacedbdbbdbabaedddbbbaabecaaebeabcbeaecdcadbaaeddcabdaccceecbeecdaeabbeeeeaebbaeeaccccbcbdbceaccabebedcdaeabbadacaeeccbeacdeeadedabdaadaadebdcdaeecedaaeadaebbeebcebcdcebbccaceebbdacabcedbaecbabbcbebacedeeceaecb...
output:
950379326
result:
ok "950379326"
Test #21:
score: 25
Accepted
time: 51ms
memory: 306072kb
input:
eeghdafhfgadahfdccfehbbabhhfeceahcacdfcadcddbaheceabfbcgabefdafccfffchfgbabcaagcegechgaahefcecfhacecbcacccedcdfhbbbbhbbgggbcagbaagdbaddcfhfacdheeafebgchedcebdfbbacbdfebfbbheadbaafbghbcddhegegaeabhgfadhbcdbgebgbdfbehehgafcgfghhgfegadachbaddhfgegcdcbccgebedadbfhhfdhhcbafehccdaegcfafdfghagcbdcaafahhbhe...
output:
173737384
result:
ok "173737384"
Test #22:
score: 25
Accepted
time: 59ms
memory: 305172kb
input:
hibgeiodleahonhcoknbamcdjaembbgjkipoaoblcbdaokcmfpoflaiebnacohliplgpjhlliomhiodnobcjclodiofgfbpemfefnpafnmmfladjbfcdaagipmpenojjdnoamogjlcogcbpehbhhcoabkpfhnoaalobhmhahjpnmamahohpafpbpogglfglaemibdiinhgjicjpaaoagnbflimgnccnhoficoapfginjbnjblkhjlnedjlalnocldknblmhbeekfbehnoogjlknefnaclcopnlaiihjmmecn...
output:
836988517
result:
ok "836988517"
Test #23:
score: 25
Accepted
time: 40ms
memory: 305228kb
input:
sgqtkkjnsmjoacqqnidrmlonqeannkedimckddebhnhthdpbelkqcecsbcloehrnaldphtiofqomljfpmqeomsenmqtqpqjpafchelbjtpccrtsjpoqamaneifmebclnhoadrcnqjhssgiiocqogqtcrepbsrelqkmlhgqppdoocooqjccpsbkhsfiqofhcplnprkkffqlhdrpmtrtrljfjoffaceckqqffshkdqbdtssdjqohteeikbfdqjfgrndplcfhstkjjietqtsppopfhaidcgbtteodhmkfdahmil...
output:
72880325
result:
ok "72880325"
Test #24:
score: 25
Accepted
time: 48ms
memory: 305168kb
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...