zoukankan      html  css  js  c++  java
  • tyvj1161聚会的名单(trie树)

    背景 Background
    明天就是candy的生日,candy又会邀请自己的一大堆好友来聚会了!哎!又要累坏飘飘乎居士了!!
    描述 Description
        明天就是candy的生日。晚上,candy找到了飘飘乎居士。她给了飘飘乎居士一张名单,名单上记录了n个candy的好朋友。可是,飘飘乎居士发现,名单上有好多重复的名字啊,这可急坏了飘飘乎居士。所幸,飘飘乎居士找到了自己的oi朋友,希望能够帮助自己。飘飘乎居士会问某个名字,而你要做的任务就是计算出名单中出现了几次该名字。
    题解:
     trie模板题,贴一下网上抄来的模板……
    type node=record
         got:longint;
         next:array['a'..'z'] of longint;
         end;
    var t:array[0..1000000] of node;
        s:string;
        n,m,i,tot:longint;
    procedure getintree(s:string);
     var i,now:longint;
     begin
      now:=1;
      for i:=1 to length(s) do
       if t[now].next[s[i]]<>0 then now:=t[now].next[s[i]]
       else begin
             inc(tot);
             t[tot].got:=0;
             fillchar(t[tot].next,sizeof(t[tot].next),0);
             t[now].next[s[i]]:=tot;
             now:=tot;
            end;
      inc(t[now].got);
     end;
    function check(s:string):longint;
     var i,now:longint;
     begin
      now:=1;
      for i:=1 to length(s) do
        if t[now].next[s[i]]<>0 then now:=t[now].next[s[i]] else exit(0);
      exit(t[now].got);
     end;
    begin
     tot:=1;
     t[1].got:=0;
     fillchar(t[1].next,sizeof(t[1].next),0);
     readln(n);
     for i:=1 to n do
      begin
       readln(s);
       getintree(s);
      end;
     readln(m);
     for i:=1 to m do
      begin
       readln(s);
       writeln(check(s));
      end;
    end.
  • 相关阅读:
    基于Dubbo的压测调优实例
    R语言之Apriori算法应用
    Linux中的用户和组
    R语言中的循环及其扩展:iter和foreach
    R在Windows下连接Oracle数据库
    R语言之机器学习程序包(更新)
    R语言之数据结构
    windows环境下node安装教程(超详细)
    windows环境下elasticsearch安装教程(超详细)
    MongoDB分片介绍
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/3768522.html
Copyright © 2011-2022 走看看