Submission #998511

#TimeUsernameProblemLanguageResultExecution timeMemory
998511fryingducPalindromic Partitions (CEOI17_palindromic)C++17
100 / 100
135 ms20840 KiB
#include "bits/stdc++.h" using namespace std; const int maxn = 1e6 + 6; const int base = 31; const int mod = 1e9 + 9; string s; int h[maxn], p[maxn]; int get_hash(int l, int r) { return (h[r] - (1ll * h[l - 1] * p[r - l + 1] % mod) + mod) % mod; } void solve() { cin >> s; int n = s.size(); s = ' ' + s; for(int i = 1; i <= n; ++i) { h[i] = (1ll * h[i - 1] * base % mod + (s[i] - 'a' + 1)) % mod; } int l = 1, r = n; int res = 0; for(int i = 1; i <= n / 2; ++i) { if(l >= r) break; if(get_hash(l, i) == get_hash(r - (i - l), r)) { res += 2; r = r - (i - l) - 1; l = i + 1; } } if(l <= (n + 1) / 2) ++res; cout << res << '\n'; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); p[0] = 1; for(int i = 1; i < maxn; ++i) { p[i] = (1ll * p[i - 1] * base) % mod; } int tt; cin >> tt; while(tt--) { 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...