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);
    }
}

 

posted @ 2018-10-10 22:17  ccsu_zry  阅读(161)  评论(0编辑  收藏  举报