제출 #1149730

#제출 시각아이디문제언어결과실행 시간메모리
1149730SSSMPalindromic Partitions (CEOI17_palindromic)C++20
100 / 100
47 ms1508 KiB
#include <bits/stdc++.h> /* #pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #pragma GCC target ("avx2") */ using namespace std; /* #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; template<class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; */ #define F first #define S second #define pb push_back #define md(a) (((a%mod)+mod)%mod) #define all(a) a.begin(), a.end() #define MP make_pair #define lc (id<<1) #define rc (lc|1) #define mid (l+r)/2 #define kill(a) cout << a << "\n", exit(0) #define SZ(a) (ll)a.size() typedef pair<int,int> pii; typedef pair<long long ,long long> pll; typedef long long ll; typedef long double ld; typedef vector<vector<ll>> matrix; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); ll const maxn=1e6+10, mod=1e9+7, INF=1e18, LOG=31, sq=65; ll poww(ll a, ll b, ll mod) { if (b == 0) return 1; return 1 * poww(1 * a * a % mod, b / 2, mod) * ((b % 2 == 1) ? a : 1) % mod; } string s; ll base=701; void solve() { cin>>s; ll ans=0, h1=0, h2=0; ll n=SZ(s), t=1; for(ll i=0;i<n-i-1;i++) { h1=md(h1*base+(s[i]-'a')); h2=md(h2+(s[n-i-1]-'a')*t); t=md(t*base); if(h1==h2) { ans+=2; h1=h2=0; t=1; } } if(h1!=h2 || n&1) ans++; cout<<ans<<"\n"; } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); ll 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...