Submission #1291155

#TimeUsernameProblemLanguageResultExecution timeMemory
1291155hahaPalindromic Partitions (CEOI17_palindromic)C++20
100 / 100
87 ms19492 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int maxn=1e6+5; const ll MOD=1e9+7; const int base=31; int t; string s; ll Hash[maxn],Pow[maxn]; ll get(int i,int j) { return (Hash[j]-Hash[i-1]*Pow[j-i+1]+MOD*MOD)%MOD; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); Pow[0]=1; for(int i=1;i<=1e6;i++) Pow[i]=(Pow[i-1]*base)%MOD; cin>>t; while(t--){ cin>>s; int n=s.size(); s=" "+s; for(int i=1;i<=n;i++){ Hash[i]=(Hash[i-1]*base+s[i]-'a'+1)%MOD; } int l=1,r=n,len=1,ans=0; while(l+len-1<r-len+1){ if(get(l,l+len-1)==get(r-len+1,r)){ ans+=2; l=l+len; r=r-len; len=1; } else len++; } if(l<=r) ans++; cout<<ans<<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...