QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#795541#8954. 一般路过串串题RedDiamond#60 792ms67452kbC++202.5kb2024-11-30 21:17:322024-11-30 21:17:33

Judging History

This is the latest submission verdict.

  • [2024-11-30 21:17:33]
  • Judged
  • Verdict: 60
  • Time: 792ms
  • Memory: 67452kb
  • [2024-11-30 21:17:32]
  • Submitted

answer

#include <bits/stdc++.h>
#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("O3")


using namespace std;


#define ll long long
#define ld long double
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()


const int MOD = 1e9 + 7;


using ULL = unsigned long long;

static const ULL P = (1ull << 61) - 1;
mt19937_64 rnd(random_device{}());
uniform_int_distribution<ULL> dist(257, P - 1);
const ULL B = dist(rnd);


static inline ULL add(ULL a, ULL b){
    a += b;
    if (a >= P) {
        a -= P;
    }
    return a;
}


static inline ULL mul(ULL a, ULL b){
    __uint128_t c = __uint128_t(a) * b;
    return add(c >> 61, c & P);
}


const int N = 2000;


ULL pula[N * N];
int cnt = 0;


int under(ULL x) {
    int l = 1, r = cnt, sol = 0;
    while (l <= r) {
        int m = (l + r) / 2;
        if (pula[m] <= x) {
            sol = m;
            l = m + 1;
        } else {
            r = m - 1;
        }
    }
    return sol;
}


int32_t main() {
    if (1) {
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
    }
    string s, t;
    cin >> s >> t;
    int n = s.size();
    int m = t.size();
    s = "#" + s;
    t = "#" + t;
    for (int i = 1; i <= m; i += 1) {
        ULL hsh = 1;
        for (int j = i; j <= m; j += 1) {
            hsh = mul(hsh, B);
            hsh = add(hsh, t[j]);
            pula[++cnt] = hsh;
        }
    }
    sort(pula + 1, pula + cnt + 1);
    vector<vector<int>> occ(n + 1, vector<int>(n + 1));
    for (int i = 1; i <= n; i += 1) {
        ULL hsh = 1;
        for (int j = i; j <= n; j += 1) {
            hsh = mul(hsh, B);
            hsh = add(hsh, s[j]);
            occ[i][j] = under(hsh) - under(hsh - 1);
        }
    }
    vector<vector<ll>> f(n + 1, vector<ll>(n + 1));
    for (int i = 1; i <= n; i += 1) {
        f[i][i] = occ[i][i];
        if (i + 1 <= n) {
            f[i][i + 1] = occ[i][i] + occ[i + 1][i + 1] + occ[i][i + 1];
        }
    }
    for (int h = 3; h <= n; h += 1) {
        for (int i = 1; i + h - 1 <= n; i += 1) {
            int j = i + h - 1;
            f[i][j] = f[i + 1][j] + f[i][j - 1] - f[i + 1][j - 1] + occ[i][j];
        }
    }
    __int128 ans = 0;
    for (int i = 1; i <= n; i += 1) {
        for (int j = 1; j <= n; j += 1) {
            ans += 1LL * f[i][j] * (j - i + 1) * (j - i + 1);
        }
        ans %= MOD;
    }
    cout << int(ans) << "\n";
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 10
Accepted

Test #1:

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

input:

aababbabbaaabaabbaabaabaabbabbabbbbaabbbbaabaaabababbabbbaaa
bababaabbbbabbbbbabbbbaabbaabaaaababbaaaabbbaabbaabbbbabbaba

output:

496507152

result:

ok "496507152"

Test #2:

score: 10
Accepted
time: 1ms
memory: 3684kb

input:

eececaecacbeabdeeaccdbbebbabddecebdcdebdbccbbddaaaeedaaebcdb
acdaabeaaaeeedcadcaeeaaeaaeeceaebbedcadaaebaaaaddbeedeeabaea

output:

580397857

result:

ok "580397857"

Test #3:

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

input:

fcdfggfggcbedeccchceggdfedgecghhacegbbehegdhcgbefdadbeaghgcc
ebbeegcfhhedfhchfdechefaafgaeacacdfgbhdbghedghdechgbdecebaef

output:

380084227

result:

ok "380084227"

Test #4:

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

input:

boodjlblcmmbdiejhhfcomlcingbgkhhifkbalmchidkbidipjkofgandgoj
afaikkjkfgnmoagpikiidcgiigfmmdfmjgedanogdlccljbedjmgmcoeidae

output:

171472585

result:

ok "171472585"

Test #5:

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

input:

ksadeedmbrojirllkmtrkdhofjgjetrojrkfnnrhceqkbhnllfanahhgiohm
ffsooatinippmdrfcdiniihahospagtflklfkknqlidddnbfqjtesgqfmpnn

output:

122853177

result:

ok "122853177"

Test #6:

score: 10
Accepted
time: 1ms
memory: 3876kb

input:

tqqeyqzvmvdnrgbdtwezhvpxjehcpehiwxoxnpsakxpedqhzmnywjovuucwj
idthdhgqwasjxincaubpjclssinmnlxxrqeuxkmvkfejpropnrextrrlcgxp

output:

113266102

result:

ok "113266102"

Subtask #2:

score: 20
Accepted

Dependency #1:

100%
Accepted

Test #7:

score: 20
Accepted
time: 12ms
memory: 4636kb

input:

aaababbbbbbaabbbbbbabbbabbabbbabaaaabbabbbbbaabbaaabbbbaabbabbbbaabbbbaaabababaababaaabaaaabaaaaabbbbaabbaabbbbabaabbbabaaaaaaaabbaabaabaaabbabbababbaabbabbabaaaaaaaababbbababababaaabbaabbbbbabbababbbaabaababbbabbbbaaabbbababbbbaaabaababbbaabbabaabababbababaaaaabaaaabbabbbbbabbbaaabbababbabaaaababab...

output:

520547094

result:

ok "520547094"

Test #8:

score: 20
Accepted
time: 12ms
memory: 4704kb

input:

adcbdbecdaabaecdaadbbceecedbeababddbcedaeabceaabcbdadcebdaedaaadbdeaccceaabbaddeebaddebebcceeccccccbbeabbbdbcdbbedbeeeabdcadbcaabacabcbdbbbdeebacdccecddcabdcdebdbbaaeabbbbcbdadbccaecdbcbccaddabbcbacadebdcedccaadbcdacaeeccecdcabcebddabcebaedccebcbdeaebcabccdbccecdedabecaebeddbcddcdbcacbacccaceadeceac...

output:

782266849

result:

ok "782266849"

Test #9:

score: 20
Accepted
time: 12ms
memory: 4684kb

input:

baecgaafgfbdfffcgbffdadabbchacebcadaadghahcgehacafhdfcdgefgehcfbdacdeacehecddcfdaegfgbecgcgfedhhebdabfeachdfbabbehhcbdfhfdfbhebdfedgbhgdgbbabcbfbahcdecaahchddcahfgaeeedffdghedafcdahfbhedghgahffffbbbegghefehgbbbbagchcffbdfaacfgeghaegaadehbfacgbabacggdcddcgaacgaccgccbgbddcfcdgddabbedfhgdagfgghbecdgafb...

output:

367143412

result:

ok "367143412"

Test #10:

score: 20
Accepted
time: 12ms
memory: 4648kb

input:

hdnhnmolcjkclidbagdicfpnpjfohpgodegaaelcofejnhkonngpdgmcpbagbgfeklekppmneahbhbpepgecmaelcebdkghfblpbkmoomfpehpigfmibnmmpanckejpfepgolfmhkllbkehpapanlmmlkogohfdlekjppfhjbcllgclhclenibjcppahedcjnmimbpgccboidjpfeedmfmoelolpcoipkbmlacocdmlgfkmjopgdleigddffboelpahpcfcfbnmghipghfjckbinfncglgckhjkjomppjlfa...

output:

661539752

result:

ok "661539752"

Test #11:

score: 20
Accepted
time: 12ms
memory: 4808kb

input:

bcslnfnhcghmeifrrqjktgkhenisgkeheckktpjcbqgrelonaqetcgsslgqrimqmgscsndaptsepcljchfnbllloradfmljljejchbjhtoobfdpeiirllifiiifblhmalnpsoernkehhhclidalojjprjmkbtobkhibbnshpcgpciscdtnsiofferqfrkstkhadmlchfichjbbmmhcabhfffncoqbngigbaretcmocbhdgtkiteiqjfcmlsneqncrftbeogsqtrlfqoghsgehdgloqqkmjnboeplsbbgatss...

output:

507358998

result:

ok "507358998"

Test #12:

score: 20
Accepted
time: 12ms
memory: 4696kb

input:

vkypxiucqbsajxealvcbnymcevlaehbzrbqqjlsbomczkiaxdeatfoxjjkkotnpmogcatvbhjfhvojstpsmujlesvqgqfyctefvxczglenhsyboowcifooxlggcleehklchnbpbificdlqthteohsmubuwmadtkowtezifjnpmtcemkxsyglmbmizaieuutsnztygdnvpgztvjtnkbaycojepriloddbcwbibpfsxfouqhkcikdnbmtsdbfthivlgywkpdcpkqjdxtfigixjwqbctgvcqqoyrkignlvabhdb...

output:

138681994

result:

ok "138681994"

Subtask #3:

score: 30
Accepted

Dependency #2:

100%
Accepted

Test #13:

score: 30
Accepted
time: 783ms
memory: 66212kb

input:

abababbbbaabbbaabaaababbabaaababababababbababbbabbbbbaabbababababbbbababbbabbbbaaabbbbbaaaababbbaaaabbabaaabbbabababbbbbaaaabaaaaaaababaabbbabaabbbaabbabbbabbaabbabbbbaaabaaabbbabbbaaabbbbabbbabaaabaaabaabbbaaaabaaabbbababababbaabaaabaaabaabaabaabbbbabbbababaaaabbbbbabbaaaaaaababaabbbbbbbbabbbababbb...

output:

775805062

result:

ok "775805062"

Test #14:

score: 30
Accepted
time: 784ms
memory: 67360kb

input:

dadbaeeadbddeddcebeeadbacdcabebcebdcbeebcceccebbbccdaadeaaaebbbcabeddaeacbecccadeadaabbbdbabadeabaaebeaacecacdabdedacadbddcaddaaececebcbbcbacebcdccaebdcbddabacaddecacdbbcbdbeabdcbcacacaaebabeabdcbcdedccbacdbcdeadbccbcbdcecabcceacedebceaacddcaedcbaeaadbedebdedaaccdbdedbeededbbbdcddcaebbbbcbdcaabbecac...

output:

130828441

result:

ok "130828441"

Test #15:

score: 30
Accepted
time: 792ms
memory: 66144kb

input:

aecdgaeegafcgfdbbbghfheghchdabcbfeedfbadbffhcbadchchghgfbfacgcddhhheahhbeebgfbbhadhgcfeecegahbdgaccbbbcffdddfecfabecgagaeeadfebggdhaebfcfbfcfhhfbdahdgaadadaefgdafdfhahebeghdfeebeeedeegeagbffefchcbhbfbfdabbefcbbgefdccdadafhfagabfbhghcgaddffeheaehcgccbcaahaghbebacadbagefeaeaabhchbebdebceacgedggdbhdada...

output:

97380744

result:

ok "97380744"

Test #16:

score: 30
Accepted
time: 786ms
memory: 67452kb

input:

pblokjmgoadcmjkfmomjmaekljffdmbcnmbhfnndnbfjkaogokpkkdegmjlpfmbcjcjopgcmhhfbhehfogpjjdpfmkebggdpimoidaekhkmpodemkefdhejeonffdjemfceicidkcpjacnnmbcajhjnfgckklpgbbkjecmoflhfoeckgfkpmdmbkomeklklmeeagbolmfbkkdfaippedlgnjcbdnlojpdkfeibaoclifaiophccciplkaphlnbkalaedbfbdajiabgpijckbbgmcfdnceidpihdjmemmoemp...

output:

602469189

result:

ok "602469189"

Test #17:

score: 30
Accepted
time: 777ms
memory: 66216kb

input:

bcanoaimlmscgbdkdptbcsoacfqbjkfcegpsgplrtblfogqrbpkenrehcnamdggtmcskjbtjccoiicfjrqfcfcbhpclkisjmmhobancohrcptiqjqcdbqfaltmbhkclocfpcksrjhleslmthgdacabntngspbbjdsqrigojnsfejrdregjsscmrhkhclidggaegskpmiaisslhokimilqsstfncgqjmifthpglqhtgrkflmnpnqmlhdiafoigtrlkqtqhhdsnmakpnplgmpjtsrldetkdinnembdtrnejoof...

output:

640668306

result:

ok "640668306"

Test #18:

score: 30
Accepted
time: 780ms
memory: 66596kb

input:

gkyjquqqernkdsxsifohrnklzzxnikoounxmjpcnirxmjueucsdtipehodwwplmlalxjabwjsvvesbyuvbpdtvmhajeqwsbyebhecfpvambsnzmlcdovydfzojrkdskhvroywdvyswrfvfszljxjmckanbmqwwyrpopntkllietdklfvucgierkruwhsuhkjvbwpoicwmvcyhhvdlcmpvwirvrkpzwzwzvnpfqmslqsuzoyksmbpkjgfasvbqwyqrnfzdttrlllkbjwtxxkigrnjlkkcgisawzzbtssgferh...

output:

242076649

result:

ok "242076649"

Subtask #4:

score: 0
Runtime Error

Dependency #3:

100%
Accepted

Test #19:

score: 0
Runtime Error

input:

abbabbbaabbabbaaaababbbabbbbbaabbbbaabaaabbabbabbababaabbbabbbaaaabbbbbbbabababaaaabaaaaabbbabaabbbaababbbbbbabbaabbabbaaaaababbbabbbbbbbaaabbabbbaaababbabbaaabbbbababaababbababbaabbbabababbbabaaaaaabbaaabbbabbaaabaaaaabbbbaabaababbbababaaaabaaabaababaaabaababaaabaabbabaaaabbbbbaabbabaabbabbabaabbaa...

output:


result:


Subtask #5:

score: 0
Skipped

Dependency #4:

0%