Submission #885183

#TimeUsernameProblemLanguageResultExecution timeMemory
88518312345678Palindromic Partitions (CEOI17_palindromic)C++17
100 / 100
85 ms26916 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int nx=1e6+5, mod=1e9+7; ll n, t, p[nx], st, ed, vl, qs[nx], sz, cnt; string s; int main() { cin.tie(NULL)->sync_with_stdio(false); p[0]=1; for (int i=1; i<nx; i++) p[i]=(p[i-1]*26)%mod; cin>>t; while (t--) { cin>>s; cnt=st=0; n=s.size(); qs[0]=s[0]-'a'; for (int i=1; i<n; i++) qs[i]=(qs[i-1]+(s[i]-'a')*p[i])%mod; while (st<=(n-1)/2) { vl=0; bool can=0; for (int i=st; i<=(n/2); i++) { vl=(vl+(s[i]-'a')*p[i-st])%mod; ed=n-1-st; sz=i-st+1; if (st+sz-1>=ed-sz+1) break; //cout<<st<<' '<<sz<<' '<<ed<<' '<<qs[ed]-qs[ed-sz]<<' '<<vl<<' '<<vl*p[ed-sz+1]<<'\n'; if (((qs[ed]-qs[ed-sz])%mod+mod)%mod==(vl*p[ed-sz+1])%mod) { cnt+=2; st=i+1; can=1; break; } } if (!can) {cnt++; break;} } cout<<cnt<<'\n'; } } /* 10 cars cac cactuscac bob bbobb bacocab bababababababa bacbacbacbacbacbacbacbacbacbacbac sasa sddsa 1 sasa */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...