QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#470396#7512. Almost Prefix Concatenation333zhanWA 222ms60028kbC++203.9kb2024-07-10 12:50:592024-07-10 12:50:59

Judging History

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

  • [2024-07-10 12:50:59]
  • 评测
  • 测评结果:WA
  • 用时:222ms
  • 内存:60028kb
  • [2024-07-10 12:50:59]
  • 提交

answer

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int mod = 998244353;
const int P = 1331;
// const int mod2 = 1E9 + 9;
// const int P2 = 131;

inline int read () {
    int w = 1, s = 0; char ch = getchar ();
    for (; ! isdigit (ch); ch = getchar ()) if (ch == '-') w = -1;
    for (; isdigit (ch); ch = getchar ()) s = (s << 1) + (s << 3) + (ch ^ 48);
    return s * w;
}

void solve () {
    string s, t;
    cin >> s >> t;

    const int n = s.size ();
    const int m = t.size ();

    s = " " + s;
    t = " " + t;

    const int N = max (n, m);

    vector <int> p (N + 1);
    p[0] = 1;
    for (int i = 1; i <= N; i ++) {
        p[i] = p[i - 1] * P % mod;
    }

    vector <int> Hash1 (n + 1), Hash2 (m + 1);
    for (int i = 1; i <= n; i ++) {
        Hash1[i] = (Hash1[i - 1] * P + s[i]) % mod;
    }
    for (int i = 1; i <= m; i ++) {
        Hash2[i] = (Hash2[i - 1] * P + t[i]) % mod;
    }

    // vector <int> p2 (N + 1);
    // p2[0] = 1;
    // for (int i = 1; i <= N; i ++) {
    //     p2[i] = p2[i - 1] * P2 % mod2;
    // }

    // vector <int> Hash21 (n + 1), Hash22 (m + 1);
    // for (int i = 1; i <= n; i ++) {
    //     Hash21[i] = (Hash21[i - 1] * P2 + s[i]) % mod2;
    // }
    // for (int i = 1; i <= m; i ++) {
    //     Hash22[i] = (Hash22[i - 1] * P2 + t[i]) % mod2;
    // }

    auto check = [&] (int l1, int r1, int l2, int r2) {
        int len = r1 - l1 + 1;
        int a = (Hash1[r1] - Hash1[l1 - 1] * p[len] % mod + mod) % mod;
        int b = (Hash2[r2] - Hash2[l2 - 1] * p[len] % mod + mod) % mod;
        // int a2 = (Hash21[r1] - Hash21[l1 - 1] * p2[len] % mod2 + mod2) % mod2;
        // int b2 = (Hash22[r2] - Hash22[l2 - 1] * p2[len] % mod2 + mod2) % mod2;
        // return a == b && a2 == b2;
        return a == b;
    };

    vector <int> lcp (n + 1);
    for (int i = 1; i <= n; i ++) {
        auto check1 = [&] (int x) {
            int l1 = i, r1 = i + x - 1;
            int l2 = 1, r2 = x;
            return check (l1, r1, l2, r2);
        };
        auto check2 = [&] (int x) {
            int l1 = i + lcp[i] + 1, r1 = i + lcp[i] + x;
            int l2 = lcp[i] + 2, r2 = lcp[i] + x + 1;
            return check (l1, r1, l2, r2);
        };

        int l = 1, r = min (m, n - i + 1);
        while (l < r) {
            int mid = (l + r + 1) / 2;
            if (check1 (mid)) {
                l = mid;
            } else {
                r = mid - 1;
            }
        }
        if (! check1 (l)) {
            l --;
        }
        lcp[i] = l;

        if (l == min (m, n - i + 1)) {
            lcp[i] += i - 1;
            continue;
        }

        l = 1, r = min (m, n - i + 1) - lcp[i] - 1;
        while (l < r) {
            int mid = (l + r + 1) / 2;
            if (check2 (mid)) {
                l = mid;
            } else {
                r = mid - 1;
            }
        }
        if (! check2 (l)) {
            l --;
        }
        lcp[i] += i + l;
    }

    // for (int i = 1; i <= n; i ++) {
    //     cerr << lcp[i] << " ";
    // }

    vector <int> suf1 (n + 3), suf2 (n + 3), suf3 (n + 3);
    suf1[n + 1] = 1;

    for (int i = n; i >= 1; i --) {
        int l = i + 1, r = lcp[i] + 1;
        suf1[i] = (suf1[l] - suf1[r + 1] + mod) % mod;
        suf2[i] = ((suf2[l] - suf2[r + 1] + mod) % mod + suf1[i]) % mod;
        suf3[i] = ((suf3[l] - suf3[r + 1] + mod) % mod + 2 * (suf2[l] - suf2[r + 1] + mod) % mod + suf1[i]) % mod;
        suf1[i] = (suf1[i] + suf1[i + 1]) % mod;
        suf2[i] = (suf2[i] + suf2[i + 1]) % mod;
        suf3[i] = (suf3[i] + suf3[i + 1]) % mod;
    }

    cout << (suf3[1] - suf3[2] + mod) % mod;
} 

signed main () {
	ios::sync_with_stdio (false);
    cin.tie (nullptr);
    
	int T = 1; 
	// cin >> T;
	// T = read ();

	while (T --) {
		solve ();
	}
	
	return 0;
}
/*
3 2 5 4 6 7 7
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3608kb

input:

ababaab
aba

output:

473

result:

ok 1 number(s): "473"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3536kb

input:

ac
ccpc

output:

5

result:

ok 1 number(s): "5"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq...

output:

75038697

result:

ok 1 number(s): "75038697"

Test #4:

score: 0
Accepted
time: 0ms
memory: 3560kb

input:

lvvvllvllvllvllllllllvvvllvlllvvlvlvllvlvvlvvvvlvvllllllvvlvlvvlllvvlvlvllllllvlvvvvvvlllvvvllvlvvvlvvlllvvvvvvlvlllvvvvlvvvvvlvvlvvlllvvllvvllvlvlvlvlvllllvvllvvllvlllvvvllllvvlvvllvvvvlvlvvlvvlllvvvvvvvvlvvlvlllvllvvvvllvvvlvvvvvvlvlllvllllvllllllllvvllllllvlvvlvvvlvllllvllvlvvllllllvlvvvlvlvlvvvl...

output:

538419149

result:

ok 1 number(s): "538419149"

Test #5:

score: 0
Accepted
time: 0ms
memory: 3556kb

input:

fzztyyyfztzzfzyztftyfzyyzzzztyyfzttzttztyzztyyyfyyftyfyfzzffyzffytttzttyzzftyfyfyftyyfzyzffyfyyzztzyyttyfyztfyfzyfzfzyftttfyyfyytzyyzfyyyzztfttzyyytzzffytyzyyyyfzfftftzzztyfftfzfzytftfttytfyzfytzfzztttttzzyztyftzzzfzfzfffttyztzfftfftyfyffztzyffttyyfyfzytytyyttfzzfyyytzzftzyyfftftyytyffzffztfytfyyyty...

output:

867833603

result:

ok 1 number(s): "867833603"

Test #6:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

xauxlgtqbsianlzjzglalnbtlujfrkfdqgczpmididmtamzeablrbrbjgtsdkzzcfhvcpdawqkrgdsereirlxbizhbsxlcbtgwwshekbhatqonvgupswcowythifpoubxkuoxuuisnzolzwektdcaouxbkhofvdqzmjulmhgqjxwzhgrzmorhqkgekntbzsxgvjtehfbterrhhjhqggzrqiqmcshzwpfoburpyfoehqgtitesyaekhlzcvxzdqmunyrlrhbrjoigdjzpcgptyoiowwnmqrxucxixxydurbdh...

output:

301464023

result:

ok 1 number(s): "301464023"

Test #7:

score: 0
Accepted
time: 0ms
memory: 3672kb

input:

tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt...

output:

816920406

result:

ok 1 number(s): "816920406"

Test #8:

score: 0
Accepted
time: 1ms
memory: 3736kb

input:

cxccxccccxccxccxcxxxccxxcxcxcxcxxcccxcxccccccxccccxccxcxcxxcxxcxcxxxcxcccxcxxxxxccxxcccxxccxxxccxccxxxxcxxccccxccxxcccxcccxxxccccxcxcxccccxxxxccxxxxxcxxxxxxcxxccxxcxcxcxxxxxcxxccxcxxxcccxcxxxccccccccxxxcccxcxxcxxxxccxxxcccccxcccxccccccxxcccxxcccxxxccxxcxccxcccxxxccxccxxxccxcxxxxccxxcxcxxcxxccxxxcxcx...

output:

206627037

result:

ok 1 number(s): "206627037"

Test #9:

score: 0
Accepted
time: 1ms
memory: 3748kb

input:

vmqvvbbmvmmmqqvqvmmbbvqbqvbmmbqmvvbmmmqvqvbvqqmvbbmmvmvqbvmqqbqvqqvmvmmbqvvbvmvbqmqqbqqqbqqmvvmmbvvvbvvvbmqqvbqbmvvmvqqvbqbvvvqmvvvmvqqmvqbmbvmvmqmmbmqqqbbmvqbqbbqqbmmvmmqqqvvvqqqqqmmvvvvqmvmmmmvmqmqbbvbvvqmmmqbbmvqvmvmqbqbbbmqbqbqmqbqmqbmvvqmmvbmmbvbqqvmmmbbmbbmvmmvbmqmqbbqqbqqbbqmbmmmqbqbmvbmvmmmm...

output:

460659355

result:

ok 1 number(s): "460659355"

Test #10:

score: 0
Accepted
time: 1ms
memory: 3668kb

input:

xthikaxiescbqjzrpgtcpigqjsojlsxsiowkkzsdsgscoolhdtglvpgcoggzqnnjmocvanrogbzqjcmijoukjicadaakehxgjphjgnskjvfneoyaucfadilscsucjgweuzcdfapfnrfffdowxvzkvgqzmtszjldylvehzjlvmhproaehqhuwdoadenqdrqwrlxxfouzqolwbopmkpjshczocnnsxktxozahzwqpwbmvexguvjhbvbjwsdtgaitoqwsfzkwnzgeidkamgcfhzhitfxenunlcsbsesbczvmmbu...

output:

906223232

result:

ok 1 number(s): "906223232"

Test #11:

score: 0
Accepted
time: 8ms
memory: 8788kb

input:

bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb...

output:

39285513

result:

ok 1 number(s): "39285513"

Test #12:

score: 0
Accepted
time: 17ms
memory: 8800kb

input:

hghggghghhghhgghgggghhghhhgghggghghhhhghghgggghhggggghhgghggghhhghggghghghggghggghgghhhghgggghghghgggghhhhhgghhgghhhghhghhhghhhhhhghghhgggggghghgggghghhghhgghhghhhhhhghgghhghghgggghgggggghghhhhhghhhhhhhgghhggggghhgghhhhhhhhghggggggghhghhghhghhgghhghgghhhhgghghghhhhhghggghhhhhhhgggggghgghghhhhghhgggg...

output:

58618935

result:

ok 1 number(s): "58618935"

Test #13:

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

input:

nnttcybbmnrnsuybrkmkmtumcyuyrrmbtybutunsyrkmunmncmkuknttmmtkymtcybttrmyrtckscttcksbtymtyukbbynnnbukttncmbutscbrytbrutnuyuknmtymckkttrrnsbtrkbnnnkbrccrcyybmnnybbkkbcbbccycsrcytnuucbbyytckrycktsmkymruycksrscytkskscbtbccbrurmumrkbkbttkcynmymbbmbkrksmnusryumsmmyrcsmusumbrkkbmsbyytmmruubskccsusnntcuntrrt...

output:

46252951

result:

ok 1 number(s): "46252951"

Test #14:

score: 0
Accepted
time: 17ms
memory: 8704kb

input:

ittaztseqcdirziayobnnxuzipvteycmgjbupnlxuheulnmzsdeymctprlxvkvzjwrotsauxagyrqcwzuwqyodrqsupwpyrmbwjqlvfdsrocneigxvnjfiseotxmutzwacfutqlmzmxwuqgjugwkafnxvzutgbrweqrdshwneksgxzzinnmbbioqdvbmavukaegvkpwauuoysklelsqhytlikpdpymbwhmbdmrycaiywtwjjqtecwoofyjhbumjtipwyopkuralejvopitpjcdswcvsugimgbrlibrteaqtb...

output:

838361918

result:

ok 1 number(s): "838361918"

Test #15:

score: 0
Accepted
time: 120ms
memory: 59044kb

input:

llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll...

output:

774442405

result:

ok 1 number(s): "774442405"

Test #16:

score: 0
Accepted
time: 210ms
memory: 56848kb

input:

nnnddndnndnddddndnnddnddnndddndndnnndnndndndnnnddndndnddnnddnndndndnnnndndddndnndndnndddndnnddnndndnnddnnddnddndddnnnndnnndddnndnddnnnddndddnndnnndndndndnddnddnndddndddnnndddnnndnndnndnnnddnnddnndnnndnnnddnnddddnndnnddnndnnnddddnddnnndnnddddddndndnnnnndnnnndddddnddnnndddndnnddndnnnddddnndndnndndndnd...

output:

478212008

result:

ok 1 number(s): "478212008"

Test #17:

score: 0
Accepted
time: 216ms
memory: 59228kb

input:

ievnetxypatirsocqrmgmhfxnkgzrscclietylohbcshjjxfmqhlxvebythkwllhjxwjngxbjeivttdgjttmyqgxsqotxueuvzrslcqpranaucprjmfczshtoqggczmbuwixllhnlcjhrvfixisvqdlxxmevucbvzolweshgvxeocppggthqkljyiszeqkpnybogisosqzdasfqgpuzudnnabwoqtrpxllqkxlbwsexwduvutufncthrmywlsqlccetggdflmgewzvhsmpyznzsxcftkoyfhgmgvliwxbywi...

output:

702291108

result:

ok 1 number(s): "702291108"

Test #18:

score: 0
Accepted
time: 122ms
memory: 59848kb

input:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

301945039

result:

ok 1 number(s): "301945039"

Test #19:

score: 0
Accepted
time: 220ms
memory: 59776kb

input:

gggggcgcgggcgccgggcgcccgccccggcccgcggccccggcccccggccgccccccggcccgggcccgggggcccgggggcgggccgcccccccgcgcggggggggggcggggggcggccgcccggggccgccccgcgcgggcggggccgcgcggcggccgggccgccgcggcccgcccggcgccgccgggcgggggcggggccgccgcccccgccccccgggggcgcgcgccggccggcggcggggcgccggcgccccggccgggggccgccccccccgcggcgcggggggcgccc...

output:

602912498

result:

ok 1 number(s): "602912498"

Test #20:

score: 0
Accepted
time: 222ms
memory: 60028kb

input:

zdomsivxdzqlpexdauxxrjvembwqtchcxcpboqwmilagfpnrzyicztptfvdlqehajqoxcqvtoglsusgfioxtwheivlmgapepuoevghzmdadbkkkrdusnvxmansofunrgmppyktkxcottuiolirqlsflpnkghhxngutoovfzluiboooswqknpedyiaspikpveswjqnqitfbynjgiqymkrldekgmkavalduxlscjewmpoctbxjujtxlavpibkyerspcfchiticgjsvmzvtadhimnvacljbhmzikeabhjoszfig...

output:

435002470

result:

ok 1 number(s): "435002470"

Test #21:

score: 0
Accepted
time: 202ms
memory: 55784kb

input:

aabaabaaabaabaaabaabaabaaabaabaaabaabaabaaabaabaaabaabaaabaabaabaaabaabaaabaabaabaaabaabaaabaabaaabaabaabaaabaabaaabaabaabaaabaabaaabaabaabaaabaabaaabaabaaabaabaabaaabaabaaabaabaabaaabaabaaabaabaaabaabaabaaabaabaaabaabaabaaabaabaaabaabaabaaabaabaaabaabaaabaabaabaaabaabaaabaabaabaaabaabaaabaabaaabaab...

output:

571187577

result:

ok 1 number(s): "571187577"

Test #22:

score: 0
Accepted
time: 201ms
memory: 56364kb

input:

abacabaabacababacabaabacabacabaabacababacabaabacabaabacababacabaabacabacabaabacababacabaabacababacabaabacabacabaabacababacabaabacabaabacababacabaabacabacabaabacababacabaabacabacabaabacababacabaabacabaabacababacabaabacabacabaabacababacabaabacababacabaabacabacabaabacababacabaabacabaabacababacabaabacab...

output:

785945100

result:

ok 1 number(s): "785945100"

Test #23:

score: 0
Accepted
time: 199ms
memory: 58800kb

input:

abaababaabaababaababaabaababaabaababaababaabaababaababaabaababaabaababaababaabaababaabaababaababaabaababaababaabaababaabaababaababaabaababaababaabaababaabaababaababaabaababaabaababaababaabaababaababaabaababaabaababaababaabaababaabaababaababaabaababaababaabaababaabaababaababaabaababaababaabaababaabaa...

output:

501555951

result:

ok 1 number(s): "501555951"

Test #24:

score: 0
Accepted
time: 205ms
memory: 59184kb

input:

abbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbabaababbaabbabaababbabaabbaababbaabbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbaabbabaabbaababbabaababbaabbabaababbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbabaababbaabbabaababbabaabbaababbaabbabaabbaab...

output:

483421416

result:

ok 1 number(s): "483421416"

Test #25:

score: 0
Accepted
time: 211ms
memory: 57940kb

input:

abbcbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcabbcbcabbcbcabbcabbcbcabbcabbcbcabbcbc...

output:

610522803

result:

ok 1 number(s): "610522803"

Test #26:

score: 0
Accepted
time: 217ms
memory: 58980kb

input:

bacaacabacaabacabacaabacaacabacaabacabacaacabacaabacaacabacaabacabacaabacaacabacaabacabacaacabacaabacaacabacaabacabacaacabacaabacabacaabacaacabacaabacabacaacabacaabacaacabacaabacabacaabacaacabacaabacabacaacabacaabacabacaabacaacabacaabacabacaacabacaabacaacabacaabacabacaacabacaabacabacaabacaacabacaaba...

output:

688840647

result:

ok 1 number(s): "688840647"

Test #27:

score: 0
Accepted
time: 216ms
memory: 57676kb

input:

abbababbabaababbababbabaabbababbabaababbababbabaababbabaabbababbabaababbababbabaababbababbabaabbababbabaababbababbabaababbabaabbababbabaababbababbabaabbababbabaababbababbabaababbababbabaabbababbabaababbababbabaababbabaabbababbabaababbababbabaabbababbabaababbababbabaababbabaabbababbabaababbababbabaab...

output:

185974021

result:

ok 1 number(s): "185974021"

Test #28:

score: 0
Accepted
time: 212ms
memory: 58884kb

input:

abacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabahabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabagabacabadabacabaeabacabadabacabafabacabadabacabaeabacabadabacabaiabacabadabacabaeabacabadabacabafabacabadabac...

output:

881963869

result:

ok 1 number(s): "881963869"

Test #29:

score: 0
Accepted
time: 215ms
memory: 58624kb

input:

aabbaaccaabbaaddaabbaaccaabbaaeeaabbaaccaabbaaddaabbaaccaabbaaffaabbaaccaabbaaddaabbaaccaabbaaeeaabbaaccaabbaaddaabbaaccaabbaaggaabbaaccaabbaaddaabbaaccaabbaaeeaabbaaccaabbaaddaabbaaccaabbaaffaabbaaccaabbaaddaabbaaccaabbaaeeaabbaaccaabbaaddaabbaaccaabbaahhaabbaaccaabbaaddaabbaaccaabbaaeeaabbaaccaabb...

output:

647864259

result:

ok 1 number(s): "647864259"

Test #30:

score: -100
Wrong Answer
time: 190ms
memory: 54988kb

input:

ddrddrdddrddrdddrddrddrdddrddrdddrddrddrdddrddrdddrddrdddrddrddrdddrddrdddrddrddrdddrddrdddrddrdddrddrddrdddrddrdddrddrddrdddrddrdddrddrddrdddrddrdddrddrdddrddrddrdddrddrdddrddrddrdddrddrdddrddrdddrddrddrdddrddrdddrddrddrdddrddrdddrddrddrdddrddrdddrddrdddrddrddrdddrddrdddrddrddrdddrddrdddrddrdddrddr...

output:

958021347

result:

wrong answer 1st numbers differ - expected: '611194463', found: '958021347'