QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#786727#8954. 一般路过串串题zlxFTH100 ✓606ms237824kbC++173.4kb2024-11-26 23:07:092024-11-26 23:07:10

Judging History

This is the latest submission verdict.

  • [2024-11-26 23:07:10]
  • Judged
  • Verdict: 100
  • Time: 606ms
  • Memory: 237824kb
  • [2024-11-26 23:07:09]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

using LL = long long;

constexpr int P = 1e9 + 7;
struct Mint {
  int v;
  Mint(int v = 0) : v(v) {v += v >> 31 & P;}
  int val() const {return v;}
  Mint &operator+=(const Mint &b) {
    v += b.v - P, v += v >> 31 & P;
    return *this;
  }
  Mint &operator-=(const Mint &b) {
    v -= b.v, v += v >> 31 & P;
    return *this;
  }
  Mint &operator*=(const Mint &b) {
    v = LL(v) * b.v % P;
    return *this;
  }
  friend Mint operator+(Mint a, const Mint &b) {return a += b;}
  friend Mint operator-(Mint a, const Mint &b) {return a -= b;}
  friend Mint operator*(Mint a, const Mint &b) {return a *= b;}
  friend ostream &operator<<(ostream &os, const Mint &a) {
    return os << a.val();
  }
};

constexpr int N = 1e6 + 5;

int cnt = 1, fa[N], len[N], ed[N];
array<int, 26> ch[N];
vector<int> G[N];
Mint sum[N];

int ins(int p, int c) {
  int cur = ++cnt; len[cur] = len[p] + 1;
  ed[cur] = 1;
  for (; p && !ch[p][c]; p = fa[p]) ch[p][c] = cur;
  if (!p) fa[cur] = 1;
  else {
    int q = ch[p][c];
    if (len[q] == len[p] + 1) fa[cur] = q;
    else {
      int cl = ++cnt;
      ch[cl] = ch[q], fa[cl] = fa[q], len[cl] = len[p] + 1;
      fa[cur] = fa[q] = cl;
      for (; p && ch[p][c] == q; p = fa[p]) ch[p][c] = cl;
    }
  }
  return cur;
}

int main() {
  cin.tie(0)->sync_with_stdio(0);
  string s, t;
  cin >> s >> t;
  int n = s.size();
  int las = 1;
  for (auto c : s) las = ins(las, c - 'a');
  for (int i = 2; i <= cnt; i++) {
    G[fa[i]].emplace_back(i);
  }
  vector<Mint> sf2(n + 2), sf1(n + 2), sf0(n + 2);
  for (int i = n; i >= 1; i--) {
    sf2[i] = sf2[i + 1] + (LL(i) * i % P);
    sf1[i] = sf1[i + 1] + i;
    sf0[i] = sf0[i + 1] + 1;
  }
  vector<Mint> ps2(n + 2), ps1(n + 2), ps0(n + 2);
  for (int i = 0; i <= n; i++) {
    ps2[i + 1] = ps2[i] + sf2[i];
    ps1[i + 1] = ps1[i] + sf1[i];
    ps0[i + 1] = ps0[i] + sf0[i];
  }
  vector q(cnt + 1, vector<tuple<int, int, Mint>>());
  {
    Mint ans;
    int l = 0, cur = 1;
    for (auto c : t) {
      c -= 'a';
      while (cur != 1 && !ch[cur][c]) {
        cur = fa[cur];
        l = len[cur];
      }
      if (ch[cur][c]) {
        cur = ch[cur][c];
        l++;
      }
      if (cur != 1) {
        q[cur].emplace_back(len[fa[cur]] + 1, l, 1);
        sum[fa[cur]] += 1;
      }
    }
    auto dfs = [&](auto self, int u)->void {
      for (auto v : G[u]) {
        self(self, v);
        sum[u] += sum[v];
      }
      if (u != 1) {
        q[u].emplace_back(len[fa[u]] + 1, len[u], sum[u]);
      }
    };
    dfs(dfs, 1);
  }
  vector<Mint> f2(n + 1), f1(n + 1), f0(n + 1);
  Mint ans;
  auto sol = [&](auto self, int u, Mint s2, Mint s1, Mint s0, Mint d)->void {
    for (auto [l, r, val] : q[u]) {
      s2 += (ps2[r + 1] - ps2[l]) * val;
      s1 += (ps1[r + 1] - ps1[l]) * val;
      s0 += (ps0[r + 1] - ps0[l]) * val;
      d += val * (r - l + 1);
    }
    if (ed[u]) {
      f2[len[u]] = s2 - d * sf2[len[u] + 1];
      f1[len[u]] = s1 - d * sf1[len[u] + 1];
      f0[len[u]] = s0 - d * sf0[len[u] + 1];
    }
    for (auto v : G[u]) {
      self(self, v, s2, s1, s0, d);
    }
  };
  sol(sol, 1, 0, 0, 0, 0);
  for (int i = 1; i <= n; i++) {
    f2[i] += f2[i - 1] + 2 * f1[i - 1] + f0[i - 1];
    f1[i] += f1[i - 1] + f0[i - 1];
    f0[i] += f0[i - 1];
    ans += f2[i];
  }
  cout << ans << "\n";
  return 0;
}

详细

Subtask #1:

score: 10
Accepted

Test #1:

score: 10
Accepted
time: 0ms
memory: 34736kb

input:

aababbabbaaabaabbaabaabaabbabbabbbbaabbbbaabaaabababbabbbaaa
bababaabbbbabbbbbabbbbaabbaabaaaababbaaaabbbaabbaabbbbabbaba

output:

496507152

result:

ok "496507152"

Test #2:

score: 10
Accepted
time: 4ms
memory: 33844kb

input:

eececaecacbeabdeeaccdbbebbabddecebdcdebdbccbbddaaaeedaaebcdb
acdaabeaaaeeedcadcaeeaaeaaeeceaebbedcadaaebaaaaddbeedeeabaea

output:

580397857

result:

ok "580397857"

Test #3:

score: 10
Accepted
time: 4ms
memory: 34736kb

input:

fcdfggfggcbedeccchceggdfedgecghhacegbbehegdhcgbefdadbeaghgcc
ebbeegcfhhedfhchfdechefaafgaeacacdfgbhdbghedghdechgbdecebaef

output:

380084227

result:

ok "380084227"

Test #4:

score: 10
Accepted
time: 8ms
memory: 33396kb

input:

boodjlblcmmbdiejhhfcomlcingbgkhhifkbalmchidkbidipjkofgandgoj
afaikkjkfgnmoagpikiidcgiigfmmdfmjgedanogdlccljbedjmgmcoeidae

output:

171472585

result:

ok "171472585"

Test #5:

score: 10
Accepted
time: 4ms
memory: 34716kb

input:

ksadeedmbrojirllkmtrkdhofjgjetrojrkfnnrhceqkbhnllfanahhgiohm
ffsooatinippmdrfcdiniihahospagtflklfkknqlidddnbfqjtesgqfmpnn

output:

122853177

result:

ok "122853177"

Test #6:

score: 10
Accepted
time: 0ms
memory: 33964kb

input:

tqqeyqzvmvdnrgbdtwezhvpxjehcpehiwxoxnpsakxpedqhzmnywjovuucwj
idthdhgqwasjxincaubpjclssinmnlxxrqeuxkmvkfejpropnrextrrlcgxp

output:

113266102

result:

ok "113266102"

Subtask #2:

score: 20
Accepted

Dependency #1:

100%
Accepted

Test #7:

score: 20
Accepted
time: 4ms
memory: 34752kb

input:

aaababbbbbbaabbbbbbabbbabbabbbabaaaabbabbbbbaabbaaabbbbaabbabbbbaabbbbaaabababaababaaabaaaabaaaaabbbbaabbaabbbbabaabbbabaaaaaaaabbaabaabaaabbabbababbaabbabbabaaaaaaaababbbababababaaabbaabbbbbabbababbbaabaababbbabbbbaaabbbababbbbaaabaababbbaabbabaabababbababaaaaabaaaabbabbbbbabbbaaabbababbabaaaababab...

output:

520547094

result:

ok "520547094"

Test #8:

score: 20
Accepted
time: 0ms
memory: 34664kb

input:

adcbdbecdaabaecdaadbbceecedbeababddbcedaeabceaabcbdadcebdaedaaadbdeaccceaabbaddeebaddebebcceeccccccbbeabbbdbcdbbedbeeeabdcadbcaabacabcbdbbbdeebacdccecddcabdcdebdbbaaeabbbbcbdadbccaecdbcbccaddabbcbacadebdcedccaadbcdacaeeccecdcabcebddabcebaedccebcbdeaebcabccdbccecdedabecaebeddbcddcdbcacbacccaceadeceac...

output:

782266849

result:

ok "782266849"

Test #9:

score: 20
Accepted
time: 0ms
memory: 33500kb

input:

baecgaafgfbdfffcgbffdadabbchacebcadaadghahcgehacafhdfcdgefgehcfbdacdeacehecddcfdaegfgbecgcgfedhhebdabfeachdfbabbehhcbdfhfdfbhebdfedgbhgdgbbabcbfbahcdecaahchddcahfgaeeedffdghedafcdahfbhedghgahffffbbbegghefehgbbbbagchcffbdfaacfgeghaegaadehbfacgbabacggdcddcgaacgaccgccbgbddcfcdgddabbedfhgdagfgghbecdgafb...

output:

367143412

result:

ok "367143412"

Test #10:

score: 20
Accepted
time: 3ms
memory: 34452kb

input:

hdnhnmolcjkclidbagdicfpnpjfohpgodegaaelcofejnhkonngpdgmcpbagbgfeklekppmneahbhbpepgecmaelcebdkghfblpbkmoomfpehpigfmibnmmpanckejpfepgolfmhkllbkehpapanlmmlkogohfdlekjppfhjbcllgclhclenibjcppahedcjnmimbpgccboidjpfeedmfmoelolpcoipkbmlacocdmlgfkmjopgdleigddffboelpahpcfcfbnmghipghfjckbinfncglgckhjkjomppjlfa...

output:

661539752

result:

ok "661539752"

Test #11:

score: 20
Accepted
time: 4ms
memory: 33688kb

input:

bcslnfnhcghmeifrrqjktgkhenisgkeheckktpjcbqgrelonaqetcgsslgqrimqmgscsndaptsepcljchfnbllloradfmljljejchbjhtoobfdpeiirllifiiifblhmalnpsoernkehhhclidalojjprjmkbtobkhibbnshpcgpciscdtnsiofferqfrkstkhadmlchfichjbbmmhcabhfffncoqbngigbaretcmocbhdgtkiteiqjfcmlsneqncrftbeogsqtrlfqoghsgehdgloqqkmjnboeplsbbgatss...

output:

507358998

result:

ok "507358998"

Test #12:

score: 20
Accepted
time: 4ms
memory: 34652kb

input:

vkypxiucqbsajxealvcbnymcevlaehbzrbqqjlsbomczkiaxdeatfoxjjkkotnpmogcatvbhjfhvojstpsmujlesvqgqfyctefvxczglenhsyboowcifooxlggcleehklchnbpbificdlqthteohsmubuwmadtkowtezifjnpmtcemkxsyglmbmizaieuutsnztygdnvpgztvjtnkbaycojepriloddbcwbibpfsxfouqhkcikdnbmtsdbfthivlgywkpdcpkqjdxtfigixjwqbctgvcqqoyrkignlvabhdb...

output:

138681994

result:

ok "138681994"

Subtask #3:

score: 30
Accepted

Dependency #2:

100%
Accepted

Test #13:

score: 30
Accepted
time: 3ms
memory: 34428kb

input:

abababbbbaabbbaabaaababbabaaababababababbababbbabbbbbaabbababababbbbababbbabbbbaaabbbbbaaaababbbaaaabbabaaabbbabababbbbbaaaabaaaaaaababaabbbabaabbbaabbabbbabbaabbabbbbaaabaaabbbabbbaaabbbbabbbabaaabaaabaabbbaaaabaaabbbababababbaabaaabaaabaabaabaabbbbabbbababaaaabbbbbabbaaaaaaababaabbbbbbbbabbbababbb...

output:

775805062

result:

ok "775805062"

Test #14:

score: 30
Accepted
time: 4ms
memory: 34112kb

input:

dadbaeeadbddeddcebeeadbacdcabebcebdcbeebcceccebbbccdaadeaaaebbbcabeddaeacbecccadeadaabbbdbabadeabaaebeaacecacdabdedacadbddcaddaaececebcbbcbacebcdccaebdcbddabacaddecacdbbcbdbeabdcbcacacaaebabeabdcbcdedccbacdbcdeadbccbcbdcecabcceacedebceaacddcaedcbaeaadbedebdedaaccdbdedbeededbbbdcddcaebbbbcbdcaabbecac...

output:

130828441

result:

ok "130828441"

Test #15:

score: 30
Accepted
time: 9ms
memory: 34952kb

input:

aecdgaeegafcgfdbbbghfheghchdabcbfeedfbadbffhcbadchchghgfbfacgcddhhheahhbeebgfbbhadhgcfeecegahbdgaccbbbcffdddfecfabecgagaeeadfebggdhaebfcfbfcfhhfbdahdgaadadaefgdafdfhahebeghdfeebeeedeegeagbffefchcbhbfbfdabbefcbbgefdccdadafhfagabfbhghcgaddffeheaehcgccbcaahaghbebacadbagefeaeaabhchbebdebceacgedggdbhdada...

output:

97380744

result:

ok "97380744"

Test #16:

score: 30
Accepted
time: 3ms
memory: 33852kb

input:

pblokjmgoadcmjkfmomjmaekljffdmbcnmbhfnndnbfjkaogokpkkdegmjlpfmbcjcjopgcmhhfbhehfogpjjdpfmkebggdpimoidaekhkmpodemkefdhejeonffdjemfceicidkcpjacnnmbcajhjnfgckklpgbbkjecmoflhfoeckgfkpmdmbkomeklklmeeagbolmfbkkdfaippedlgnjcbdnlojpdkfeibaoclifaiophccciplkaphlnbkalaedbfbdajiabgpijckbbgmcfdnceidpihdjmemmoemp...

output:

602469189

result:

ok "602469189"

Test #17:

score: 30
Accepted
time: 4ms
memory: 33968kb

input:

bcanoaimlmscgbdkdptbcsoacfqbjkfcegpsgplrtblfogqrbpkenrehcnamdggtmcskjbtjccoiicfjrqfcfcbhpclkisjmmhobancohrcptiqjqcdbqfaltmbhkclocfpcksrjhleslmthgdacabntngspbbjdsqrigojnsfejrdregjsscmrhkhclidggaegskpmiaisslhokimilqsstfncgqjmifthpglqhtgrkflmnpnqmlhdiafoigtrlkqtqhhdsnmakpnplgmpjtsrldetkdinnembdtrnejoof...

output:

640668306

result:

ok "640668306"

Test #18:

score: 30
Accepted
time: 4ms
memory: 35208kb

input:

gkyjquqqernkdsxsifohrnklzzxnikoounxmjpcnirxmjueucsdtipehodwwplmlalxjabwjsvvesbyuvbpdtvmhajeqwsbyebhecfpvambsnzmlcdovydfzojrkdskhvroywdvyswrfvfszljxjmckanbmqwwyrpopntkllietdklfvucgierkruwhsuhkjvbwpoicwmvcyhhvdlcmpvwirvrkpzwzwzvnpfqmslqsuzoyksmbpkjgfasvbqwyqrnfzdttrlllkbjwtxxkigrnjlkkcgisawzzbtssgferh...

output:

242076649

result:

ok "242076649"

Subtask #4:

score: 25
Accepted

Dependency #3:

100%
Accepted

Test #19:

score: 25
Accepted
time: 8ms
memory: 43564kb

input:

abbabbbaabbabbaaaababbbabbbbbaabbbbaabaaabbabbabbababaabbbabbbaaaabbbbbbbabababaaaabaaaaabbbabaabbbaababbbbbbabbaabbabbaaaaababbbabbbbbbbaaabbabbbaaababbabbaaabbbbababaababbababbaabbbabababbbabaaaaaabbaaabbbabbaaabaaaaabbbbaabaababbbababaaaabaaabaababaaabaababaaabaabbabaaaabbbbbaabbabaabbabbabaabbaa...

output:

743975419

result:

ok "743975419"

Test #20:

score: 25
Accepted
time: 11ms
memory: 40576kb

input:

dadbceeaceadceeceeedceceadbccceaceeaadaceaabeaaabaddecaebbcddddbecdecacdcecdbcddccdeeddcecaacedbdbbdbabaedddbbbaabecaaebeabcbeaecdcadbaaeddcabdaccceecbeecdaeabbeeeeaebbaeeaccccbcbdbceaccabebedcdaeabbadacaeeccbeacdeeadedabdaadaadebdcdaeecedaaeadaebbeebcebcdcebbccaceebbdacabcedbaecbabbcbebacedeeceaecb...

output:

950379326

result:

ok "950379326"

Test #21:

score: 25
Accepted
time: 15ms
memory: 38804kb

input:

eeghdafhfgadahfdccfehbbabhhfeceahcacdfcadcddbaheceabfbcgabefdafccfffchfgbabcaagcegechgaahefcecfhacecbcacccedcdfhbbbbhbbgggbcagbaagdbaddcfhfacdheeafebgchedcebdfbbacbdfebfbbheadbaafbghbcddhegegaeabhgfadhbcdbgebgbdfbehehgafcgfghhgfegadachbaddhfgegcdcbccgebedadbfhhfdhhcbafehccdaegcfafdfghagcbdcaafahhbhe...

output:

173737384

result:

ok "173737384"

Test #22:

score: 25
Accepted
time: 8ms
memory: 40816kb

input:

hibgeiodleahonhcoknbamcdjaembbgjkipoaoblcbdaokcmfpoflaiebnacohliplgpjhlliomhiodnobcjclodiofgfbpemfefnpafnmmfladjbfcdaagipmpenojjdnoamogjlcogcbpehbhhcoabkpfhnoaalobhmhahjpnmamahohpafpbpogglfglaemibdiinhgjicjpaaoagnbflimgnccnhoficoapfginjbnjblkhjlnedjlalnocldknblmhbeekfbehnoogjlknefnaclcopnlaiihjmmecn...

output:

836988517

result:

ok "836988517"

Test #23:

score: 25
Accepted
time: 11ms
memory: 40444kb

input:

sgqtkkjnsmjoacqqnidrmlonqeannkedimckddebhnhthdpbelkqcecsbcloehrnaldphtiofqomljfpmqeomsenmqtqpqjpafchelbjtpccrtsjpoqamaneifmebclnhoadrcnqjhssgiiocqogqtcrepbsrelqkmlhgqppdoocooqjccpsbkhsfiqofhcplnprkkffqlhdrpmtrtrljfjoffaceckqqffshkdqbdtssdjqohteeikbfdqjfgrndplcfhstkjjietqtsppopfhaidcgbtteodhmkfdahmil...

output:

72880325

result:

ok "72880325"

Test #24:

score: 25
Accepted
time: 12ms
memory: 38384kb

input:

vroqptfrssjnqoungjzfrdlzobofwvgtpxmeqrxkjhxcvsrebsjvvwulxlrwizpxwbcnvbxgivignbkqtvlrriepvvldvcdtghgbighrdszqtlipgwgxekobizgfejykqhlznusqoriieqzkmhjstytbzagdlhncoaddxvtlobtstucibnavlwylyhqjoglegohdlapzdktyhxgiljfwfejflaobgcfosmueolftvzrcwanhjsgqypvjrjkznrogdkmrvrmssexrgkapegfdyaoplbpzsffwptpkkccfizwq...

output:

307364626

result:

ok "307364626"

Subtask #5:

score: 15
Accepted

Dependency #4:

100%
Accepted

Test #25:

score: 15
Accepted
time: 606ms
memory: 237824kb

input:

aaaaababababbbbbbbaaaaaaabababbbabbaabbbbbaabbaabaabaababaaabbbbbabbbbaaaabbababbaabbaaaaaabbbbabaabbabababbbbaaaaabaabaaaabbbabbaababbbaaabaaaababbaaaaaababbbabbbaaababaabaabbaabaababbbbabaaabaabaaabaaaaabaabbaaaabbbabaabbbbbaababbaaaabaabbabbaaaaabaaabbabbaaabaababbabababaabaabbbbbaabbbbabbaaaabba...

output:

756138565

result:

ok "756138565"

Test #26:

score: 15
Accepted
time: 474ms
memory: 194880kb

input:

eebbddedeedabaaaccbadddbacebbeecebdeeccabcaaeaaccdcdbcedeaeabeccccbdeaddaedebadbdaeeeaedceaaaedcbbadedbeebaddeebeacecbebccbcbbedabdecbadcabaecdbeccbddcbabdceacebaadbacadaccdaacecbcbaaddbaddeeeeaacceecbbcedceccccaccdbabbdaaaaaaeabeccceebeaabccbbcbeecaddbdadaeadadadebbddbeaecededcdbcbeabccdaadaddebeaa...

output:

323368

result:

ok "323368"

Test #27:

score: 15
Accepted
time: 453ms
memory: 188880kb

input:

dcbebgedhgbhcfgbdeaccaffahbdfcgaehffgbafabecgcdbhedbeaheaaafcgfggcdeedbeeggcabehfhbcaagaagfdfcbdffhbaaffgdhhedgcdhedhcdabadgcebhbaacafhhaggfcehfedadfddgdgefdffeffggdffdedaghhddcdhagcgbbdgeadagbheeebhaeagdhbhcegccaadbdcfefgcgfgcbhccdcagbcfdgdfbegefbgdfebhcgffhehbhbcgcedgchdddbaadgdaceafcfcccbdbcfhebd...

output:

696242378

result:

ok "696242378"

Test #28:

score: 15
Accepted
time: 374ms
memory: 173556kb

input:

gfbbncgcpoodckopappjdbndfpionopddaebcldcjbfmlelmdkfglcjacbpppocdpgebbhdljjhencaanggiipjkbijagldfchhdpkoidfmainafdgnlggghophfllkncbabmpjpegamdabghpbnfheehljcgdpjfpkboeadkapnbbdiaeffmjjdecflgeeldomccmfmnejofmgfbllneeaihfdnjhimgeoiadfniolnlbdmmojacjjjomgheodkcccdfhangmlbnonkmgkopdinaoeenhopjacpidmophpm...

output:

568511191

result:

ok "568511191"

Test #29:

score: 15
Accepted
time: 407ms
memory: 177704kb

input:

qeqnqejgndgqpcfbkosggdhlidbpkecgatarpjpieoqlqbntplfngnroqsbgoqfohfdcgtddntobbhaikgoqllctbqrpecbltffseibjahknhdbrjhgmsalliigmlidkfjabjbkjbmcipqredpioitfqiebleqnjfokhhaqieliahgqcnfibegkeklhohbpfhfegrapbdpncbkrhpfillkibnphbicshtcoiobkkqdmkfjrmhresiembltomoetnsncfoepdttnfbkjihfghjsbbkhnqmebcsdhetohloaip...

output:

650472067

result:

ok "650472067"

Test #30:

score: 15
Accepted
time: 415ms
memory: 175468kb

input:

dokgwkdznhzgcgvuaxilttzsxplqroyucidatgaipbpthkqkjyvctwxqmijdwhaardcmlexdgmwpymzhnwlgtkzhsimqroskrvxfzukfigvgvwpkvcsqnrzfblysaqdtncapwkuetrmqqdclfudumccppakrsplgrnvpyrttlhjbmlothtotvsjkstcmipubcrqcjlvwugxgtnbbgrwdjhndcrqmiknncdpnqnlkviqrxuudlqgvavycpqrxdemhkcuarflopdfmzzrlsxisuiwjznjcuvlezfgsmrhdxmrw...

output:

745158025

result:

ok "745158025"