码迷,mamicode.com
首页 > 其他好文 > 详细

tyvj1161聚会的名单(trie树)

时间:2014-06-05 18:31:30      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:des   c   style   class   blog   code   

背景 Background
明天就是candy的生日,candy又会邀请自己的一大堆好友来聚会了!哎!又要累坏飘飘乎居士了!!
描述 Description
    明天就是candy的生日。晚上,candy找到了飘飘乎居士。她给了飘飘乎居士一张名单,名单上记录了n个candy的好朋友。可是,飘飘乎居士发现,名单上有好多重复的名字啊,这可急坏了飘飘乎居士。所幸,飘飘乎居士找到了自己的oi朋友,希望能够帮助自己。飘飘乎居士会问某个名字,而你要做的任务就是计算出名单中出现了几次该名字。
题解:
 trie模板题,贴一下网上抄来的模板……
bubuko.com,布布扣
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.
bubuko.com,布布扣

 

tyvj1161聚会的名单(trie树),布布扣,bubuko.com

tyvj1161聚会的名单(trie树)

标签:des   c   style   class   blog   code   

原文地址:http://www.cnblogs.com/zyfzyf/p/3768522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!