LCS
xls模板
#include<cstdio> #include<cstring> char d[10005]; int query(int l,int r,char k){ int m=(l+r)/2; while(l<r){ if(d[m]>=k)r=m; else{ if(l==m)break; l=m; } m=(l+r)/2; } if(d[l]>=k)return l; return r; } int main(){ char s[10001]; int t; scanf("%d",&t); while(t--){ scanf("%s",s); int i,l=strlen(s),ans=1; d[ans]=s[0]; for(i=1;i<l;i++){ if(s[i]>d[ans]){ d[++ans]=s[i]; } else{ int k=query(1,ans,s[i]); d[k]=s[i]; } if(ans==26)break; } printf("%d\n",ans); } }