QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#535086#793. Palindromic Partitionsisirazeev100 ✓232ms21800kbC++201.4kb2024-08-27 19:37:022024-08-27 19:37:02

Judging History

This is the latest submission verdict.

  • [2024-08-27 19:37:02]
  • Judged
  • Verdict: 100
  • Time: 232ms
  • Memory: 21800kb
  • [2024-08-27 19:37:02]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;
#define int long long

struct Hash {

    const int mod = (int) 1e9 + 7;
    const int pr = 31;

    int N;
    vector<int> p, h;

    void init(string s) {
        N = (int) s.size();
        p.resize(N + 1), h.resize(N + 1);
        p[0] = 1;
        for (int i = 1; i <= N; i++) p[i] = (p[i - 1] * pr) % mod;
        for (int i = 0; i < N; i++)
            h[i] = ((i > 0 ? h[i - 1] : 0) + p[i] * (s[i] - 'a' + 1)) % mod;
    }

    int get_hash(int l, int r) {
        return (((h[r] - (l > 0 ? h[l - 1] : 0)) % mod + mod) % mod * p[N - l]) % mod;
    }
};

void solve() {
    string s;
    cin >> s;
    Hash T;
    T.init(s);
    int l = 0, r = (int) s.size() - 1, res = 0;
    while (l <= r) {
        int prev = res;
        for (int i = l; i <= r && (i - l + 1) <= (r - l + 1) / 2; i++) {
            int len = i - l + 1;
            if (T.get_hash(l, i) == T.get_hash(r - len + 1, r)) {
                res += 2;
                l += len, r -= len;
                break;
            }
        }
        if (res == prev) {
            res++;
            break;
        }
    }
    cout << res << "\n";
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 15
Accepted

Test #1:

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

input:

10
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaabaaaaaaaaaaaaaab
aaaaaaaaaaaaabxaaaaaaaaaaaaab
baaaaaaaaaaaaaabaaaaaaaaaaaaaa
aabbaabbaabbaaaaaaaabbaabbaabb
ababababababababababababababab
abcabcabcabcabcabcabcabcabcabc
abcabcabcabcabccbacbacbacbacba
qntshryhcojkqnlmqeob...

output:

30
29
2
3
2
12
15
10
30
3

result:

ok 10 lines

Test #2:

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

input:

10
aaabbbbaabbbbbbbaaaaabbb
aaaababbbaabbabbbaaaaababbb
aaabbbbaaaaaaaabbbba
aaaaaaabbbbbbbaaaaaaabbbbbbb
babbababbabbababbabab
abbabaabbaababba
bonobo
palindrome
deemed
level

output:

10
5
10
2
17
16
3
1
5
5

result:

ok 10 lines

Test #3:

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

input:

5
abba
aabaab
x
aa
ab

output:

4
2
1
2
1

result:

ok 5 lines

Test #4:

score: 15
Accepted
time: 0ms
memory: 3620kb

input:

10
aabbaabbaabbaaaaaaaabbaabbaabb
aabbaabbaabbaaaaabbaabbaabb
aabbaabbaabbaaaaabbaabbaabb
aabbaabbaabbaaaaaaaabbaabbaabb
aabbaabbaabbaaaaaaaabbaabbaabb
aabbaabbaabbaaaaabbaabbaabb
aabbaabbaabbaaaaaaaabbaabbaabb
aabbaabbaabbaaaaaabbaabbaabb
aabbaabbaabbaaaaaaabbaabbaabb
aabbaabbaabbaaaaaaabbaabbaabb

output:

12
9
9
12
12
9
12
10
11
11

result:

ok 10 lines

Test #5:

score: 15
Accepted
time: 0ms
memory: 3596kb

input:

10
abbabaabbaababba
abbabaabbaababba
abbabaabbaababba
abbabaabbaababba
abbabaabbaababba
abbabaabbaababba
abbabaabbaababba
abbabaabbaababba
abbabaabbaababba
abbabaabbaababba

output:

16
16
16
16
16
16
16
16
16
16

result:

ok 10 lines

Subtask #2:

score: 20
Accepted

Dependency #1:

100%
Accepted

Test #6:

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

input:

10
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

300
299
2
3
2
30
150
100
300
11

result:

ok 10 lines

Test #7:

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

input:

6
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbabbbbababaaabbababbbaabbabbabbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaababbbababbababbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbabbbbababaaabbababbbaabbabbabbaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

3
9
7
2
177
256

result:

ok 6 lines

Test #8:

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

input:

10
aaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbbaaaaaaaabbbbbbbb
aaaaaaaab...

output:

47
32
31
33
22
46
46
24
34
46

result:

ok 10 lines

Test #9:

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

input:

10
abbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbabaababbaabbabaababbabaabbaababbaabbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbaabbabaabbaababbabaababbaabbabaababbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababba
abbabaabbaababbabaababbaabbabaabbaababba...

output:

256
256
256
256
256
256
256
256
256
256

result:

ok 10 lines

Subtask #3:

score: 25
Accepted

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Test #10:

score: 25
Accepted
time: 3ms
memory: 3688kb

input:

10
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

10000
9999
2
3
2
100
5000
3333
9996
495

result:

ok 10 lines

Test #11:

score: 25
Accepted
time: 0ms
memory: 3696kb

input:

6
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

3
9
18
2
5169
4096

result:

ok 6 lines

Test #12:

score: 25
Accepted
time: 3ms
memory: 3684kb

input:

10
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaa...

output:

258
282
116
109
287
192
167
251
148
146

result:

ok 10 lines

Test #13:

score: 25
Accepted
time: 0ms
memory: 3680kb

input:

10
abbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbabaababbaabbabaababbabaabbaababbaabbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbaabbabaabbaababbabaababbaabbabaababbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbabaababbaabbabaababbabaabbaababbaabbabaabb...

output:

4096
4096
4096
4096
4096
4096
4096
4096
4096
4096

result:

ok 10 lines

Subtask #4:

score: 40
Accepted

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

100%
Accepted

Test #14:

score: 40
Accepted
time: 232ms
memory: 21800kb

input:

10
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

1000000
999999
2
3
2
1000
500000
333333
999996
48937

result:

ok 10 lines

Test #15:

score: 40
Accepted
time: 128ms
memory: 21672kb

input:

6
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

3
3
7
2
635623
262144

result:

ok 6 lines

Test #16:

score: 40
Accepted
time: 221ms
memory: 21668kb

input:

10
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...

output:

1777
1925
1110
1151
2733
2540
2190
2760
1152
2229

result:

ok 10 lines

Test #17:

score: 40
Accepted
time: 127ms
memory: 12984kb

input:

10
abbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbabaababbaabbabaababbabaabbaababbaabbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbaabbabaabbaababbabaababbaabbabaababbabaabbaababbabaababbaabbabaabbaababbaabbabaababbabaabbaababbabaababbaabbabaababbabaabbaababbaabbabaabb...

output:

262144
262144
262144
262144
262144
262144
262144
262144
262144
262144

result:

ok 10 lines