제출 #1302441

#제출 시각아이디문제언어결과실행 시간메모리
1302441kawhietPalindromic Partitions (CEOI17_palindromic)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
using namespace std;

constexpr int p = 53;
constexpr int mod = 1e9 + 9;

void solve() {
    string a;
    cin >> a;
    int n = a.size();
    vector<int> h(n + 1), pw(n + 1, 1);
    for (int i = 0; i < n; i++) {
        pw[i + 1] = (pw[i] * p) % mod;
        h[i + 1] = (h[i] * p + (a[i] - 'a' + 1)) % mod;
    }
    auto get = [&](int l, int r) {
        return (h[r] - h[l - 1] * pw[r - l + 1] % mod + mod) % mod;
    };
    int tl = 1, tr = n, l = 1, r = n, ans = 0;
    string s;
    while (l < r) {
        s.push_back(a[l]);
        int pre = get(tl, l);
        int suf = get(r, tr);
        if (pre == suf) {
            tl = l + 1;
            tr = r - 1;
            s.clear();
            ans += 2;
        }
        l++; r--;
    }
    if (l <= r || !s.empty()) {
        ans++;
    }
    cout << ans << '\n';
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...