• Lightoj 1129【字典树】


    题意:如果存在一个串是另一个串的公共前缀就是NO,否则就是YES
    思路:利用字典树的特性搞搞就好了
    #include <bits/stdc++.h>
    using namespace std;
    
    const int N=1e5+10;//一共有n(10000)个串,每个串有10个数字
    
    struct Trie{
        Trie* next[15];
        int num;
    };
    Trie q[N];
    bool flag;
    int tol;
    
    Trie* Creat()
    {
        Trie *p;
        p=&q[tol];
        tol++;
        p->num=0;
        for(int i=0;i<10;i++)
            p->next[i]=NULL;
        return p;
    }
    
    void Insert(Trie *p,char *str)
    {
        int len=strlen(str);
        for(int i=0;i<len;i++)
        {
            int id=str[i]-'0';
            if(p->next[id]==NULL)
                p->next[id]=Creat();
            else
            {
                if(str[i+1]=='')  //这个串是之前一个串的公共前缀
                {
                    flag=1;
                    return;
                }
            }
            p=p->next[id];
            if(p->num==1)   //之前有一个串是这个串公共前缀
            {
                flag=1;
                return;
            }
        }
        p->num++;
    }
    
    int main()
    {
        char s[15];
        int n;
        int T,cas=1;
        scanf("%d",&T);
        while(T--)
        {
            Trie *root;
            tol=0;
            root=Creat();
            flag=false;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                scanf("%s",s);
                if(!flag)
                    Insert(root,s);
            }
            printf("Case %d: ",cas++);
            if(flag)
                puts("NO");
            else
                puts("YES");
        }
        return 0;
    }
    

  • 相关阅读:
    hdu-5569 matrix(dp)
    hdu-5780 gcd(数学)
    hdu-5778 abs(暴力枚举)
    hdu-5777 domino(贪心)
    hdu-5776 sum(同余)
    polymer-quick tour of polymer
    polymer-developer guide-feature overview
    polymer技巧
    polymer入门例子-已过时
    polymer-developer guide-registration and lifecycle
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777547.html
Copyright © 2020-2023  润新知