• BZOJ 1212: [HNOI2004]L语言 trie


    长度小于 10 是关键信息~

    #include <cstdio>  
    #include <cstring>
    #include <algorithm>
    #define N 1000000 
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std; 
    struct Node { 
    	int ch[27],end,len; 
    }t[N]; 
    int n,m,tot,f[N]; 
    char S[N]; 
    void insert(int i) { 
    	int rt=0,len=strlen(S+1),j; 
    	for(j=len;j>=1;--j) {
    		if(!t[rt].ch[S[j]-'a']) t[rt].ch[S[j]-'a']=++tot;       
    		t[t[rt].ch[S[j]-'a']].len=t[rt].len+1;    
    		rt=t[rt].ch[S[j]-'a'];      
    	} 
    	t[rt].end=1;         
    }
    int main() { 
    	int i,j; 
    	// setIO("input");                 
    	scanf("%d%d",&n,&m);
    	for(i=1;i<=n;++i) 
    		scanf("%s",S+1),insert(i);  
    	f[0]=1; 
    	for(int cas=1;cas<=m;++cas) {
    		scanf("%s",S+1);    
    		int len=strlen(S+1); 
    		for(i=1;i<=len;++i) { 
    			int p=0; 
    			f[i]=0; 
    			for(j=i;j>=1;--j) {             
    				p=t[p].ch[S[j]-'a'];     
    				if(!p) break; 
    				if(t[p].end) f[i]|=f[j-1];               
    			}
    		}
    		int MX=0; 
    		for(i=1;i<=len;++i) {
    			if(f[i]) {
    				MX=i; 
    			}
    		} 
    		printf("%d
    ",MX); 
    	}
    	return 0; 
    }
    

      

  • 相关阅读:
    整数反转问题--正确率极低
    May LeetCoding Challenge9 之 求方差
    May LeetCoding Challenge8 之 交叉相乘
    EXCEL上传DEMO
    三层BOM
    OO alv 获取选择列
    PS 项目创建
    读取EXCEL到内表
    SAP XML 到 内表
    BOM 复制功能
  • 原文地址:https://www.cnblogs.com/guangheli/p/11422134.html
Copyright © 2020-2023  润新知