zoukankan      html  css  js  c++  java
  • HDU-1251 难题统计(Tire模板题,数组模拟写法)

    题意:

    给你一堆单词与询问,每次询问给一个字符串s问以s为前缀的字符串有多少

    思路:

    #include<iostream>
    #include<algorithm>
    #include<cstring>
     using namespace std;
     const int maxn=400009;
        struct tire{
            int ch[maxn][26];
            int val[maxn];
            int sz;
            void init(){
                sz=1;
                memset(ch[0],0,sizeof(ch[0]));
                val[0]=0;
            }
            int idx(char c){return c-'a';}
            void insert(char *s){
                int u=0;
                int 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++;
                    }
                    val[u]++;
                    u=ch[u][c];
                }
                val[u]++;
            }
            int query(char *s){
                int u=0;
                int n=strlen(s);
                for(int i=0;i<n;i++){
                    int c=idx(s[i]);
                    if(!ch[u][c])    return 0;
                    u=ch[u][c];
                }
                return val[u];
            }
        }tire;
     int main()
     {
         char s[20];
         tire.init();
         while(gets(s)&&s[0]!=0)    tire.insert(s);
         while(scanf("%s",&s)!=EOF)  printf("%d
    ",tire.query(s));
        return 0;
     }

     

  • 相关阅读:
    Ubuntu网卡配置
    Ubuntu软件包管理器
    更改系统语言环境
    简单泛型
    surface知识点
    RTMP协议
    直播技术之现代播放器原理
    直播技术之延迟优化
    直播技术之处理
    【转】草根老师的 linux字符设备驱动详解
  • 原文地址:https://www.cnblogs.com/overrate-wsj/p/12257582.html
Copyright © 2011-2022 走看看