제출 #1170202

#제출 시각아이디문제언어결과실행 시간메모리
1170202nguyenkhangninh99Palindromic Partitions (CEOI17_palindromic)C++17
100 / 100
98 ms19064 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 1e6 + 5, mod = 998244353, base = 727; int p[maxn], f[maxn]; int get(int l, int r){ return ((f[r] - f[l - 1] * p[r - l + 1]) % mod + mod) % mod; } void solve(){ string s; cin >> s; int n = s.size(); s = '#' + s; for(int i = 1; i <= n; i++) f[i] = (f[i - 1] * base + s[i] - 'a' + 1) % mod; int res = 1, ll = 1, lr = n; for (int i = 1, j = n; i < j; i++, j--){ if (get(ll, i) == get(j, lr)){ res += 2; ll = i + 1; lr = j - 1; } } if (ll - lr == 1) res--; cout << res << '\n'; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); p[0] = 1; for(int i = 1; i <= 1000000; i++) p[i] = (p[i - 1] * base) % mod; int t; cin >> t; while(t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...