QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#795453#8954. 一般路过串串题RedDiamond#30 11ms8560kbC++202.1kb2024-11-30 20:37:332024-11-30 20:37:33

Judging History

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

  • [2024-11-30 20:37:33]
  • 评测
  • 测评结果:30
  • 用时:11ms
  • 内存:8560kb
  • [2024-11-30 20:37:33]
  • 提交

answer

#include <bits/stdc++.h>


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);
}

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();
    assert(n <= 2000 && m <= 2000);
    s = "#" + s;
    t = "#" + t;
    unordered_map<ULL, int> cnt;
    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]);
            cnt[hsh] += 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] = cnt[hsh];
        }
    }
    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: 1ms
memory: 3816kb

input:

aababbabbaaabaabbaabaabaabbabbabbbbaabbbbaabaaabababbabbbaaa
bababaabbbbabbbbbabbbbaabbaabaaaababbaaaabbbaabbaabbbbabbaba

output:

496507152

result:

ok "496507152"

Test #2:

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

input:

eececaecacbeabdeeaccdbbebbabddecebdcdebdbccbbddaaaeedaaebcdb
acdaabeaaaeeedcadcaeeaaeaaeeceaebbedcadaaebaaaaddbeedeeabaea

output:

580397857

result:

ok "580397857"

Test #3:

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

input:

fcdfggfggcbedeccchceggdfedgecghhacegbbehegdhcgbefdadbeaghgcc
ebbeegcfhhedfhchfdechefaafgaeacacdfgbhdbghedghdechgbdecebaef

output:

380084227

result:

ok "380084227"

Test #4:

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

input:

boodjlblcmmbdiejhhfcomlcingbgkhhifkbalmchidkbidipjkofgandgoj
afaikkjkfgnmoagpikiidcgiigfmmdfmjgedanogdlccljbedjmgmcoeidae

output:

171472585

result:

ok "171472585"

Test #5:

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

input:

ksadeedmbrojirllkmtrkdhofjgjetrojrkfnnrhceqkbhnllfanahhgiohm
ffsooatinippmdrfcdiniihahospagtflklfkknqlidddnbfqjtesgqfmpnn

output:

122853177

result:

ok "122853177"

Test #6:

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

input:

tqqeyqzvmvdnrgbdtwezhvpxjehcpehiwxoxnpsakxpedqhzmnywjovuucwj
idthdhgqwasjxincaubpjclssinmnlxxrqeuxkmvkfejpropnrextrrlcgxp

output:

113266102

result:

ok "113266102"

Subtask #2:

score: 20
Accepted

Dependency #1:

100%
Accepted

Test #7:

score: 20
Accepted
time: 5ms
memory: 8132kb

input:

aaababbbbbbaabbbbbbabbbabbabbbabaaaabbabbbbbaabbaaabbbbaabbabbbbaabbbbaaabababaababaaabaaaabaaaaabbbbaabbaabbbbabaabbbabaaaaaaaabbaabaabaaabbabbababbaabbabbabaaaaaaaababbbababababaaabbaabbbbbabbababbbaabaababbbabbbbaaabbbababbbbaaabaababbbaabbabaabababbababaaaaabaaaabbabbbbbabbbaaabbababbabaaaababab...

output:

520547094

result:

ok "520547094"

Test #8:

score: 20
Accepted
time: 7ms
memory: 8444kb

input:

adcbdbecdaabaecdaadbbceecedbeababddbcedaeabceaabcbdadcebdaedaaadbdeaccceaabbaddeebaddebebcceeccccccbbeabbbdbcdbbedbeeeabdcadbcaabacabcbdbbbdeebacdccecddcabdcdebdbbaaeabbbbcbdadbccaecdbcbccaddabbcbacadebdcedccaadbcdacaeeccecdcabcebddabcebaedccebcbdeaebcabccdbccecdedabecaebeddbcddcdbcacbacccaceadeceac...

output:

782266849

result:

ok "782266849"

Test #9:

score: 20
Accepted
time: 8ms
memory: 8440kb

input:

baecgaafgfbdfffcgbffdadabbchacebcadaadghahcgehacafhdfcdgefgehcfbdacdeacehecddcfdaegfgbecgcgfedhhebdabfeachdfbabbehhcbdfhfdfbhebdfedgbhgdgbbabcbfbahcdecaahchddcahfgaeeedffdghedafcdahfbhedghgahffffbbbegghefehgbbbbagchcffbdfaacfgeghaegaadehbfacgbabacggdcddcgaacgaccgccbgbddcfcdgddabbedfhgdagfgghbecdgafb...

output:

367143412

result:

ok "367143412"

Test #10:

score: 20
Accepted
time: 2ms
memory: 8444kb

input:

hdnhnmolcjkclidbagdicfpnpjfohpgodegaaelcofejnhkonngpdgmcpbagbgfeklekppmneahbhbpepgecmaelcebdkghfblpbkmoomfpehpigfmibnmmpanckejpfepgolfmhkllbkehpapanlmmlkogohfdlekjppfhjbcllgclhclenibjcppahedcjnmimbpgccboidjpfeedmfmoelolpcoipkbmlacocdmlgfkmjopgdleigddffboelpahpcfcfbnmghipghfjckbinfncglgckhjkjomppjlfa...

output:

661539752

result:

ok "661539752"

Test #11:

score: 20
Accepted
time: 11ms
memory: 8460kb

input:

bcslnfnhcghmeifrrqjktgkhenisgkeheckktpjcbqgrelonaqetcgsslgqrimqmgscsndaptsepcljchfnbllloradfmljljejchbjhtoobfdpeiirllifiiifblhmalnpsoernkehhhclidalojjprjmkbtobkhibbnshpcgpciscdtnsiofferqfrkstkhadmlchfichjbbmmhcabhfffncoqbngigbaretcmocbhdgtkiteiqjfcmlsneqncrftbeogsqtrlfqoghsgehdgloqqkmjnboeplsbbgatss...

output:

507358998

result:

ok "507358998"

Test #12:

score: 20
Accepted
time: 8ms
memory: 8560kb

input:

vkypxiucqbsajxealvcbnymcevlaehbzrbqqjlsbomczkiaxdeatfoxjjkkotnpmogcatvbhjfhvojstpsmujlesvqgqfyctefvxczglenhsyboowcifooxlggcleehklchnbpbificdlqthteohsmubuwmadtkowtezifjnpmtcemkxsyglmbmizaieuutsnztygdnvpgztvjtnkbaycojepriloddbcwbibpfsxfouqhkcikdnbmtsdbfthivlgywkpdcpkqjdxtfigixjwqbctgvcqqoyrkignlvabhdb...

output:

138681994

result:

ok "138681994"

Subtask #3:

score: 0
Time Limit Exceeded

Dependency #2:

100%
Accepted

Test #13:

score: 0
Time Limit Exceeded

input:

abababbbbaabbbaabaaababbabaaababababababbababbbabbbbbaabbababababbbbababbbabbbbaaabbbbbaaaababbbaaaabbabaaabbbabababbbbbaaaabaaaaaaababaabbbabaabbbaabbabbbabbaabbabbbbaaabaaabbbabbbaaabbbbabbbabaaabaaabaabbbaaaabaaabbbababababbaabaaabaaabaabaabaabbbbabbbababaaaabbbbbabbaaaaaaababaabbbbbbbbabbbababbb...

output:


result:


Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Skipped

Dependency #4:

0%