Submission #934266

#TimeUsernameProblemLanguageResultExecution timeMemory
934266UmairAhmadMirzaPalindromic Partitions (CEOI17_palindromic)C++14
100 / 100
267 ms34876 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int const N=1e6+5; int const mod=1e9+7; int const base=727; int dp[N]; int Hash[N]; int pw[N]; void pre(){ pw[0]=1; for(int i=1;i<N;i++) pw[i]=(pw[i-1]*base)%mod; } int make_hash(int l,int r){ l--; int h=((Hash[r]-((Hash[l]*pw[r-l])%mod))+mod)%mod; return h; } void solve(){ string s; cin>>s; int n=s.length(); int hsh=0; for(int i=0;i<n;i++){ hsh*=base; hsh%=mod; hsh+=s[i]; hsh%=mod; Hash[i+1]=hsh; } for(int i=0;i<=n;i++) dp[i]=0; int ans=0; int j=0; for(int i=1;i<=(n/2);i++){ if(make_hash(j+1,i)==make_hash(n-(i-1),n-j)){ j=i; ans+=2; } } if(j*2<n) ans++; cout<<max(1LL,ans)<<endl; } signed main(){ pre(); 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...