zoukankan      html  css  js  c++  java
  • UVA1401 (字典树加简单dp)

    #pragma GCC optimize(2)
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N = 5e5+10;
    const int mod=20071027;
    const int sigma_size=26;
    int dp[N];
    char str[N];
    char s[105];
    struct Trie{
        int ch[N][sigma_size];
        int val[N];
        int sz;
        Trie(){sz=1;memset(ch[0],0,sizeof(ch[0]));}
        int idx(char c) {return c-'a';}
        void reset(){memset(ch,0,sizeof(ch));memset(val,0,sizeof(val));sz=1;}
        void insert(char *s,int v)
        {
            int u=0,n=strlen(s);
            for(int i=0;i<n;i++)
            {
                int c=idx(s[i]);
                if(!ch[u][c])
                {
                    memset(ch[sz],0,sizeof(ch[sz]));
                    val[sz]=0;
                    ch[u][c]=sz++;
                }
                u=ch[u][c];
            }
            val[u]=v;
        }
        int query(char *s,int a)
        {
            int u=0,res=0;
            for(int i=a;s[i];++i)
            {
                int c=idx(s[i]);
                if(!ch[u][c])
                    return res;
                u=ch[u][c];
                if(val[u])
                {
                    res+=dp[i+1];
                    res%=mod;
                }
            }
            return res;
        }
    };
    Trie T;
    int main()
    {
        int kase=0;
        while(scanf("%s",str)!=EOF)
        {
            int n,m=strlen(str);
            scanf("%d",&n);
            T.reset();
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=n;i++)
            {
                scanf("%s",s);
                T.insert(s,1);
            }
            dp[m]=1;
            for(int i=m-1;i>=0;i--)
            {
                dp[i]=T.query(str,i);
            }
            printf("Case %d: %d
    ",++kase,dp[0]);
        }
        return 0;
    }
  • 相关阅读:
    express学习
    安装MongoDB步骤
    js事件流
    关于html,css,js三者的加载顺序问题
    重写JS的鼠标右键点击菜单
    深入JS原型与原型链
    eureka学习(二)
    eureka学习(一)
    mysql学习-explain中的extra
    mysql学习-explain
  • 原文地址:https://www.cnblogs.com/hh13579/p/11684839.html
Copyright © 2011-2022 走看看