QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#599781 | #8954. 一般路过串串题 | Xun_xiaoyao | 100 ✓ | 633ms | 275388kb | C++20 | 2.9kb | 2024-09-29 10:38:45 | 2024-09-29 10:38:45 |
Judging History
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];
int p[2000010],nxt[2000010];
int poi_cnt;
void reset()
{
memset(s,0,sizeof(s));poi_cnt=0;
memset(p,0,sizeof(p)),memset(nxt,0,sizeof(nxt));
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=p[a];v;v=nxt[v])
{
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++) nxt[i]=p[s[i].link],p[s[i].link]=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: 37ms
memory: 274900kb
input:
aababbabbaaabaabbaabaabaabbabbabbbbaabbbbaabaaabababbabbbaaa bababaabbbbabbbbbabbbbaabbaabaaaababbaaaabbbaabbaabbbbabbaba
output:
496507152
result:
ok "496507152"
Test #2:
score: 10
Accepted
time: 42ms
memory: 275288kb
input:
eececaecacbeabdeeaccdbbebbabddecebdcdebdbccbbddaaaeedaaebcdb acdaabeaaaeeedcadcaeeaaeaaeeceaebbedcadaaebaaaaddbeedeeabaea
output:
580397857
result:
ok "580397857"
Test #3:
score: 10
Accepted
time: 30ms
memory: 274772kb
input:
fcdfggfggcbedeccchceggdfedgecghhacegbbehegdhcgbefdadbeaghgcc ebbeegcfhhedfhchfdechefaafgaeacacdfgbhdbghedghdechgbdecebaef
output:
380084227
result:
ok "380084227"
Test #4:
score: 10
Accepted
time: 32ms
memory: 273916kb
input:
boodjlblcmmbdiejhhfcomlcingbgkhhifkbalmchidkbidipjkofgandgoj afaikkjkfgnmoagpikiidcgiigfmmdfmjgedanogdlccljbedjmgmcoeidae
output:
171472585
result:
ok "171472585"
Test #5:
score: 10
Accepted
time: 36ms
memory: 274308kb
input:
ksadeedmbrojirllkmtrkdhofjgjetrojrkfnnrhceqkbhnllfanahhgiohm ffsooatinippmdrfcdiniihahospagtflklfkknqlidddnbfqjtesgqfmpnn
output:
122853177
result:
ok "122853177"
Test #6:
score: 10
Accepted
time: 44ms
memory: 275388kb
input:
tqqeyqzvmvdnrgbdtwezhvpxjehcpehiwxoxnpsakxpedqhzmnywjovuucwj idthdhgqwasjxincaubpjclssinmnlxxrqeuxkmvkfejpropnrextrrlcgxp
output:
113266102
result:
ok "113266102"
Subtask #2:
score: 20
Accepted
Dependency #1:
100%
Accepted
Test #7:
score: 20
Accepted
time: 32ms
memory: 273768kb
input:
aaababbbbbbaabbbbbbabbbabbabbbabaaaabbabbbbbaabbaaabbbbaabbabbbbaabbbbaaabababaababaaabaaaabaaaaabbbbaabbaabbbbabaabbbabaaaaaaaabbaabaabaaabbabbababbaabbabbabaaaaaaaababbbababababaaabbaabbbbbabbababbbaabaababbbabbbbaaabbbababbbbaaabaababbbaabbabaabababbababaaaaabaaaabbabbbbbabbbaaabbababbabaaaababab...
output:
520547094
result:
ok "520547094"
Test #8:
score: 20
Accepted
time: 48ms
memory: 274168kb
input:
adcbdbecdaabaecdaadbbceecedbeababddbcedaeabceaabcbdadcebdaedaaadbdeaccceaabbaddeebaddebebcceeccccccbbeabbbdbcdbbedbeeeabdcadbcaabacabcbdbbbdeebacdccecddcabdcdebdbbaaeabbbbcbdadbccaecdbcbccaddabbcbacadebdcedccaadbcdacaeeccecdcabcebddabcebaedccebcbdeaebcabccdbccecdedabecaebeddbcddcdbcacbacccaceadeceac...
output:
782266849
result:
ok "782266849"
Test #9:
score: 20
Accepted
time: 32ms
memory: 274352kb
input:
baecgaafgfbdfffcgbffdadabbchacebcadaadghahcgehacafhdfcdgefgehcfbdacdeacehecddcfdaegfgbecgcgfedhhebdabfeachdfbabbehhcbdfhfdfbhebdfedgbhgdgbbabcbfbahcdecaahchddcahfgaeeedffdghedafcdahfbhedghgahffffbbbegghefehgbbbbagchcffbdfaacfgeghaegaadehbfacgbabacggdcddcgaacgaccgccbgbddcfcdgddabbedfhgdagfgghbecdgafb...
output:
367143412
result:
ok "367143412"
Test #10:
score: 20
Accepted
time: 35ms
memory: 274900kb
input:
hdnhnmolcjkclidbagdicfpnpjfohpgodegaaelcofejnhkonngpdgmcpbagbgfeklekppmneahbhbpepgecmaelcebdkghfblpbkmoomfpehpigfmibnmmpanckejpfepgolfmhkllbkehpapanlmmlkogohfdlekjppfhjbcllgclhclenibjcppahedcjnmimbpgccboidjpfeedmfmoelolpcoipkbmlacocdmlgfkmjopgdleigddffboelpahpcfcfbnmghipghfjckbinfncglgckhjkjomppjlfa...
output:
661539752
result:
ok "661539752"
Test #11:
score: 20
Accepted
time: 27ms
memory: 274376kb
input:
bcslnfnhcghmeifrrqjktgkhenisgkeheckktpjcbqgrelonaqetcgsslgqrimqmgscsndaptsepcljchfnbllloradfmljljejchbjhtoobfdpeiirllifiiifblhmalnpsoernkehhhclidalojjprjmkbtobkhibbnshpcgpciscdtnsiofferqfrkstkhadmlchfichjbbmmhcabhfffncoqbngigbaretcmocbhdgtkiteiqjfcmlsneqncrftbeogsqtrlfqoghsgehdgloqqkmjnboeplsbbgatss...
output:
507358998
result:
ok "507358998"
Test #12:
score: 20
Accepted
time: 39ms
memory: 274504kb
input:
vkypxiucqbsajxealvcbnymcevlaehbzrbqqjlsbomczkiaxdeatfoxjjkkotnpmogcatvbhjfhvojstpsmujlesvqgqfyctefvxczglenhsyboowcifooxlggcleehklchnbpbificdlqthteohsmubuwmadtkowtezifjnpmtcemkxsyglmbmizaieuutsnztygdnvpgztvjtnkbaycojepriloddbcwbibpfsxfouqhkcikdnbmtsdbfthivlgywkpdcpkqjdxtfigixjwqbctgvcqqoyrkignlvabhdb...
output:
138681994
result:
ok "138681994"
Subtask #3:
score: 30
Accepted
Dependency #2:
100%
Accepted
Test #13:
score: 30
Accepted
time: 36ms
memory: 273420kb
input:
abababbbbaabbbaabaaababbabaaababababababbababbbabbbbbaabbababababbbbababbbabbbbaaabbbbbaaaababbbaaaabbabaaabbbabababbbbbaaaabaaaaaaababaabbbabaabbbaabbabbbabbaabbabbbbaaabaaabbbabbbaaabbbbabbbabaaabaaabaabbbaaaabaaabbbababababbaabaaabaaabaabaabaabbbbabbbababaaaabbbbbabbaaaaaaababaabbbbbbbbabbbababbb...
output:
775805062
result:
ok "775805062"
Test #14:
score: 30
Accepted
time: 36ms
memory: 273828kb
input:
dadbaeeadbddeddcebeeadbacdcabebcebdcbeebcceccebbbccdaadeaaaebbbcabeddaeacbecccadeadaabbbdbabadeabaaebeaacecacdabdedacadbddcaddaaececebcbbcbacebcdccaebdcbddabacaddecacdbbcbdbeabdcbcacacaaebabeabdcbcdedccbacdbcdeadbccbcbdcecabcceacedebceaacddcaedcbaeaadbedebdedaaccdbdedbeededbbbdcddcaebbbbcbdcaabbecac...
output:
130828441
result:
ok "130828441"
Test #15:
score: 30
Accepted
time: 32ms
memory: 273760kb
input:
aecdgaeegafcgfdbbbghfheghchdabcbfeedfbadbffhcbadchchghgfbfacgcddhhheahhbeebgfbbhadhgcfeecegahbdgaccbbbcffdddfecfabecgagaeeadfebggdhaebfcfbfcfhhfbdahdgaadadaefgdafdfhahebeghdfeebeeedeegeagbffefchcbhbfbfdabbefcbbgefdccdadafhfagabfbhghcgaddffeheaehcgccbcaahaghbebacadbagefeaeaabhchbebdebceacgedggdbhdada...
output:
97380744
result:
ok "97380744"
Test #16:
score: 30
Accepted
time: 40ms
memory: 274816kb
input:
pblokjmgoadcmjkfmomjmaekljffdmbcnmbhfnndnbfjkaogokpkkdegmjlpfmbcjcjopgcmhhfbhehfogpjjdpfmkebggdpimoidaekhkmpodemkefdhejeonffdjemfceicidkcpjacnnmbcajhjnfgckklpgbbkjecmoflhfoeckgfkpmdmbkomeklklmeeagbolmfbkkdfaippedlgnjcbdnlojpdkfeibaoclifaiophccciplkaphlnbkalaedbfbdajiabgpijckbbgmcfdnceidpihdjmemmoemp...
output:
602469189
result:
ok "602469189"
Test #17:
score: 30
Accepted
time: 31ms
memory: 273920kb
input:
bcanoaimlmscgbdkdptbcsoacfqbjkfcegpsgplrtblfogqrbpkenrehcnamdggtmcskjbtjccoiicfjrqfcfcbhpclkisjmmhobancohrcptiqjqcdbqfaltmbhkclocfpcksrjhleslmthgdacabntngspbbjdsqrigojnsfejrdregjsscmrhkhclidggaegskpmiaisslhokimilqsstfncgqjmifthpglqhtgrkflmnpnqmlhdiafoigtrlkqtqhhdsnmakpnplgmpjtsrldetkdinnembdtrnejoof...
output:
640668306
result:
ok "640668306"
Test #18:
score: 30
Accepted
time: 36ms
memory: 273380kb
input:
gkyjquqqernkdsxsifohrnklzzxnikoounxmjpcnirxmjueucsdtipehodwwplmlalxjabwjsvvesbyuvbpdtvmhajeqwsbyebhecfpvambsnzmlcdovydfzojrkdskhvroywdvyswrfvfszljxjmckanbmqwwyrpopntkllietdklfvucgierkruwhsuhkjvbwpoicwmvcyhhvdlcmpvwirvrkpzwzwzvnpfqmslqsuzoyksmbpkjgfasvbqwyqrnfzdttrlllkbjwtxxkigrnjlkkcgisawzzbtssgferh...
output:
242076649
result:
ok "242076649"
Subtask #4:
score: 25
Accepted
Dependency #3:
100%
Accepted
Test #19:
score: 25
Accepted
time: 40ms
memory: 273728kb
input:
abbabbbaabbabbaaaababbbabbbbbaabbbbaabaaabbabbabbababaabbbabbbaaaabbbbbbbabababaaaabaaaaabbbabaabbbaababbbbbbabbaabbabbaaaaababbbabbbbbbbaaabbabbbaaababbabbaaabbbbababaababbababbaabbbabababbbabaaaaaabbaaabbbabbaaabaaaaabbbbaabaababbbababaaaabaaabaababaaabaababaaabaabbabaaaabbbbbaabbabaabbabbabaabbaa...
output:
743975419
result:
ok "743975419"
Test #20:
score: 25
Accepted
time: 35ms
memory: 273840kb
input:
dadbceeaceadceeceeedceceadbccceaceeaadaceaabeaaabaddecaebbcddddbecdecacdcecdbcddccdeeddcecaacedbdbbdbabaedddbbbaabecaaebeabcbeaecdcadbaaeddcabdaccceecbeecdaeabbeeeeaebbaeeaccccbcbdbceaccabebedcdaeabbadacaeeccbeacdeeadedabdaadaadebdcdaeecedaaeadaebbeebcebcdcebbccaceebbdacabcedbaecbabbcbebacedeeceaecb...
output:
950379326
result:
ok "950379326"
Test #21:
score: 25
Accepted
time: 40ms
memory: 274472kb
input:
eeghdafhfgadahfdccfehbbabhhfeceahcacdfcadcddbaheceabfbcgabefdafccfffchfgbabcaagcegechgaahefcecfhacecbcacccedcdfhbbbbhbbgggbcagbaagdbaddcfhfacdheeafebgchedcebdfbbacbdfebfbbheadbaafbghbcddhegegaeabhgfadhbcdbgebgbdfbehehgafcgfghhgfegadachbaddhfgegcdcbccgebedadbfhhfdhhcbafehccdaegcfafdfghagcbdcaafahhbhe...
output:
173737384
result:
ok "173737384"
Test #22:
score: 25
Accepted
time: 36ms
memory: 274872kb
input:
hibgeiodleahonhcoknbamcdjaembbgjkipoaoblcbdaokcmfpoflaiebnacohliplgpjhlliomhiodnobcjclodiofgfbpemfefnpafnmmfladjbfcdaagipmpenojjdnoamogjlcogcbpehbhhcoabkpfhnoaalobhmhahjpnmamahohpafpbpogglfglaemibdiinhgjicjpaaoagnbflimgnccnhoficoapfginjbnjblkhjlnedjlalnocldknblmhbeekfbehnoogjlknefnaclcopnlaiihjmmecn...
output:
836988517
result:
ok "836988517"
Test #23:
score: 25
Accepted
time: 44ms
memory: 274052kb
input:
sgqtkkjnsmjoacqqnidrmlonqeannkedimckddebhnhthdpbelkqcecsbcloehrnaldphtiofqomljfpmqeomsenmqtqpqjpafchelbjtpccrtsjpoqamaneifmebclnhoadrcnqjhssgiiocqogqtcrepbsrelqkmlhgqppdoocooqjccpsbkhsfiqofhcplnprkkffqlhdrpmtrtrljfjoffaceckqqffshkdqbdtssdjqohteeikbfdqjfgrndplcfhstkjjietqtsppopfhaidcgbtteodhmkfdahmil...
output:
72880325
result:
ok "72880325"
Test #24:
score: 25
Accepted
time: 31ms
memory: 273796kb
input:
vroqptfrssjnqoungjzfrdlzobofwvgtpxmeqrxkjhxcvsrebsjvvwulxlrwizpxwbcnvbxgivignbkqtvlrriepvvldvcdtghgbighrdszqtlipgwgxekobizgfejykqhlznusqoriieqzkmhjstytbzagdlhncoaddxvtlobtstucibnavlwylyhqjoglegohdlapzdktyhxgiljfwfejflaobgcfosmueolftvzrcwanhjsgqypvjrjkznrogdkmrvrmssexrgkapegfdyaoplbpzsffwptpkkccfizwq...
output:
307364626
result:
ok "307364626"
Subtask #5:
score: 15
Accepted
Dependency #4:
100%
Accepted
Test #25:
score: 15
Accepted
time: 633ms
memory: 275284kb
input:
aaaaababababbbbbbbaaaaaaabababbbabbaabbbbbaabbaabaabaababaaabbbbbabbbbaaaabbababbaabbaaaaaabbbbabaabbabababbbbaaaaabaabaaaabbbabbaababbbaaabaaaababbaaaaaababbbabbbaaababaabaabbaabaababbbbabaaabaabaaabaaaaabaabbaaaabbbabaabbbbbaababbaaaabaabbabbaaaaabaaabbabbaaabaababbabababaabaabbbbbaabbbbabbaaaabba...
output:
756138565
result:
ok "756138565"
Test #26:
score: 15
Accepted
time: 575ms
memory: 275324kb
input:
eebbddedeedabaaaccbadddbacebbeecebdeeccabcaaeaaccdcdbcedeaeabeccccbdeaddaedebadbdaeeeaedceaaaedcbbadedbeebaddeebeacecbebccbcbbedabdecbadcabaecdbeccbddcbabdceacebaadbacadaccdaacecbcbaaddbaddeeeeaacceecbbcedceccccaccdbabbdaaaaaaeabeccceebeaabccbbcbeecaddbdadaeadadadebbddbeaecededcdbcbeabccdaadaddebeaa...
output:
323368
result:
ok "323368"
Test #27:
score: 15
Accepted
time: 537ms
memory: 275268kb
input:
dcbebgedhgbhcfgbdeaccaffahbdfcgaehffgbafabecgcdbhedbeaheaaafcgfggcdeedbeeggcabehfhbcaagaagfdfcbdffhbaaffgdhhedgcdhedhcdabadgcebhbaacafhhaggfcehfedadfddgdgefdffeffggdffdedaghhddcdhagcgbbdgeadagbheeebhaeagdhbhcegccaadbdcfefgcgfgcbhccdcagbcfdgdfbegefbgdfebhcgffhehbhbcgcedgchdddbaadgdaceafcfcccbdbcfhebd...
output:
696242378
result:
ok "696242378"
Test #28:
score: 15
Accepted
time: 479ms
memory: 275200kb
input:
gfbbncgcpoodckopappjdbndfpionopddaebcldcjbfmlelmdkfglcjacbpppocdpgebbhdljjhencaanggiipjkbijagldfchhdpkoidfmainafdgnlggghophfllkncbabmpjpegamdabghpbnfheehljcgdpjfpkboeadkapnbbdiaeffmjjdecflgeeldomccmfmnejofmgfbllneeaihfdnjhimgeoiadfniolnlbdmmojacjjjomgheodkcccdfhangmlbnonkmgkopdinaoeenhopjacpidmophpm...
output:
568511191
result:
ok "568511191"
Test #29:
score: 15
Accepted
time: 494ms
memory: 275264kb
input:
qeqnqejgndgqpcfbkosggdhlidbpkecgatarpjpieoqlqbntplfngnroqsbgoqfohfdcgtddntobbhaikgoqllctbqrpecbltffseibjahknhdbrjhgmsalliigmlidkfjabjbkjbmcipqredpioitfqiebleqnjfokhhaqieliahgqcnfibegkeklhohbpfhfegrapbdpncbkrhpfillkibnphbicshtcoiobkkqdmkfjrmhresiembltomoetnsncfoepdttnfbkjihfghjsbbkhnqmebcsdhetohloaip...
output:
650472067
result:
ok "650472067"
Test #30:
score: 15
Accepted
time: 502ms
memory: 275196kb
input:
dokgwkdznhzgcgvuaxilttzsxplqroyucidatgaipbpthkqkjyvctwxqmijdwhaardcmlexdgmwpymzhnwlgtkzhsimqroskrvxfzukfigvgvwpkvcsqnrzfblysaqdtncapwkuetrmqqdclfudumccppakrsplgrnvpyrttlhjbmlothtotvsjkstcmipubcrqcjlvwugxgtnbbgrwdjhndcrqmiknncdpnqnlkviqrxuudlqgvavycpqrxdemhkcuarflopdfmzzrlsxisuiwjznjcuvlezfgsmrhdxmrw...
output:
745158025
result:
ok "745158025"