zoukankan      html  css  js  c++  java
  • 洛谷1258 Tire字典树

    直接上代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef unsigned int ui;
    typedef long long ll;
    typedef unsigned long long ull;
    #define pf printf
    #define mem(a,b) memset(a,b,sizeof(a))
    #define prime1 1e9+7
    #define prime2 1e9+9
    #define pi 3.14159265
    #define lson l,mid,rt<<1
    #define rson mid+1,r,rt<<1|1
    #define scand(x) scanf("%llf",&x) 
    #define f(i,a,b) for(int i=a;i<=b;i++)
    #define scan(a) scanf("%d",&a)
    #define dbg(args) cout<<#args<<":"<<args<<endl;
    #define inf 0x3f3f3f3f
    const int maxn=1e6+10;
    int n,m,t;
    int l=0;
    char s[maxn];
    int trie[maxn][26],cnt[maxn];
    void insert(char* s)
    {
        int len=strlen(s);
        int now=0;
        f(i,0,len-1)
        {
            char c=s[i]-'a';
            if(!trie[now][c])trie[now][c]=++l;
            now=trie[now][c];
        }
        cnt[now]=1;
    }
    int query(char* s)
    {
        int len=strlen(s);
        int now=0;
        f(i,0,len-1)
        {
            char c=s[i]-'a';
            if(!trie[now][c])return 1;//匹配失败 
            now=trie[now][c];
        }
        if(cnt[now]==0)return 1;//没有单词 
        if(cnt[now]==1)
        {
            cnt[now]=2;
            return 2;
        }
        if(cnt[now]==2)return 3;
    }
    void debug()
    {
        f(i,0,l)
        {
            pf("%d : %d next[",i,cnt[i]);
            f(j,0,26)
            {
                pf("%d ",trie[i][j]);
            }
            pf("]
    ");
        }
    }
    int main()
    {
        //freopen("input.txt","r",stdin);
        //freopen("output.txt","w",stdout);
        std::ios::sync_with_stdio(false);
        scan(n);
        mem(trie,0);
        f(i,1,n)
        {
            scanf("%s",s);
            insert(s);
    //        debug();
        }
        scan(m);
        int ans=0;
    
        while(m--)
        {
            scanf("%s",s);
            ans=query(s);
            if(ans==1)pf("WRONG
    ");
            else if(ans==3)pf("REPEAT
    ");
            else pf("OK
    ");
        }
     } 
  • 相关阅读:
    巡回赛 -- 简单的拓扑排序
    最简单的拓扑排序
    blockhouses
    部分和问题
    jfinal路由简单解析
    python mysql
    Gradle--ubuntu
    解决ssh登录后闲置时间过长而断开连接
    业界有很多MQ产品
    avalon---qunar ued
  • 原文地址:https://www.cnblogs.com/randy-lo/p/12549630.html
Copyright © 2011-2022 走看看