背景 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[..] of node;
s:string;
n,m,i,tot:longint;
procedure getintree(s:string);
var i,now:longint;
begin
now:=;
for i:= to length(s) do
if t[now].next[s[i]]<> then now:=t[now].next[s[i]]
else begin
inc(tot);
t[tot].got:=;
fillchar(t[tot].next,sizeof(t[tot].next),);
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:=;
for i:= to length(s) do
if t[now].next[s[i]]<> then now:=t[now].next[s[i]] else exit();
exit(t[now].got);
end;
begin
tot:=;
t[].got:=;
fillchar(t[].next,sizeof(t[].next),);
readln(n);
for i:= to n do
begin
readln(s);
getintree(s);
end;
readln(m);
for i:= to m do
begin
readln(s);
writeln(check(s));
end;
end.
05-08 15:36