小A正在解开一个谜题:他获得了一个n位的字符串s,谜题需要小A在s中删掉一些字符,使得s变成一个奇特的串。
如果一个字符串左移一位等于它右移一位,即s2s3s4…sn-1sns1等于sns1s2…sn-2sn-1则称该串为奇特的串
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; char s[200005]; int cnt[10],ed[200005][10]; int main(){ int T; scanf("%d",&T); while (T--){ scanf("%s",s+1); int l=strlen(s+1); memset(cnt,0,sizeof(cnt)); for (int i=1; i<=l; i++) cnt[s[i]-'0']++; for (int j=0; j<10; j++) ed[l+1][j]=l+1; for (int i=l; i>=1; i--){ for (int j=0; j<=9; j++) ed[i][j]=ed[i+1][j]; _______(1)_________ } int res=0; for (int i=0; i<=9; i++){ if (cnt[i]==0) continue; res=max(res,_____(2)______); for (int j=0; j<=9; j++){ if (cnt[j]==0) continue; if (i!=j){ int st=ed[1][i],tot=0,flag=1; while (________(3)_________){ tot++; if (flag) { if (ed[st+1][j]>l) break; _________(4)________ } else { if (ed[st+1][i]>l) break; _________(5)________ } flag=flag^1; } if (tot%2==1) _______(6)________ res=max(res,tot); } } } printf("%d\n",l-res); } return 0; }