1. //字典树模板题.题意:给一个库,每次查询,求以之为前缀的单词数量。
  2. #include<iostream>
  3. #include<string>
  4. #include<vector>
  5. #include<cstdio>
  6. #include<cstring>
  7. using namespace std;
  8. int tree[500000][27];
  9. int w[500000]; //记录结点属性。
  10. int numv=0; // 全局变量,记录顶点编号
  11. int n;
  12. void insert(string s) //建树 tree[u][i]:结点u的第i个孩子('a'为0,以此类推).
  13. { //值是i对应的孩子结点编号.这个要遍历孩子边,要遍历26次,
  14. //否则添加vector<vector<> >,来保存边也可.
  15. int u=0;
  16. int len=s.size();
  17. for(int i=0;i<len;i++)
  18. {
  19. if(tree[u][s[i]-'a']==0) //新建顶点
  20. {
  21. tree[u][s[i]-'a']=++numv;
  22. }
  23. u=tree[u][s[i]-'a']; //往下找
  24. w[u]++;
  25. }
  26. }
  27. int find(string s)
  28. {
  29. int u=0;
  30. int len=s.size();
  31. for(int i=0;i<len;i++) //找不到
  32. {
  33. if(tree[u][s[i]-'a']==0)
  34. return 0;
  35. u=tree[u][s[i]-'a'];
  36. }
  37. return w[u];
  38.  
  39. }
  40. int main()
  41. {
  42. string s;
  43. while(1) //一直读入字符串,到换行为止
  44. {
  45. cin>>s;
  46. insert(s);
  47. getchar();
  48. if(cin.peek()=='\n')break;
  49. }
  50. while(cin>>s)
  51. {
  52. cout<<find(s)<<endl;
  53. }
  54. return 0;
  55. }

hdu1251 字典树trie 模板题的更多相关文章

  1. hdu1251+字典树常用模板

    这里只简单给出几个常用的字典树的模板,要看具体介绍的请看:传送门 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现) ...

  2. [hdu1251]统计难题(trie模板题)

    题意:返回字典中所有以测试串为前缀的字符串总数. 解题关键:trie模板题,由AC自动机的板子稍加改造而来. #include<cstdio> #include<cstring> ...

  3. HDU 1251 统计难题(字典树入门模板题 很重要)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  4. Hihicoder 题目1 : Trie树(字典树,经典题)

    题目1 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编 ...

  5. hdu 1251:统计难题(字典树,经典题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

  6. [POJ] #1002# 487-3279 : 桶排序/字典树(Trie树)/快速排序

    一. 题目 487-3279 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 274040   Accepted: 48891 ...

  7. 『字典树 trie』

    字典树 (trie) 字典树,又名\(trie\)树,是一种用于实现字符串快速检索的树形数据结构.核心思想为利用若干字符串的公共前缀来节约储存空间以及实现快速检索. \(trie\)树可以在\(O(( ...

  8. poj 2503:Babelfish(字典树,经典题,字典翻译)

    Babelfish Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 30816   Accepted: 13283 Descr ...

  9. poj 2001:Shortest Prefixes(字典树,经典题,求最短唯一前缀)

    Shortest Prefixes Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12731   Accepted: 544 ...

随机推荐

  1. WPF显示尺寸与设备无关问题

    WPF单位 WPF窗口以及其中的所有元素都是用与设备无关的单位进行度量.一个与设备无关的单位被定义为1/96英寸.WPF程序统一用下面一个公式来定义物理单位尺寸: [ 物理单位尺寸(像素)] = [ ...

  2. C# Excel常用控件总结

    参考:https://blog.csdn.net/waterstar50/article/details/80590355 1.ClosedXML2.EPPlus 教程:http://www.cnbl ...

  3. Redis string类型常用操作

      Redis 有 string.list.set.zset.hash数据类型.string类型是最基础的,其他类型都是在string类型上去建立的,所以了解熟悉string类型的常用操作对于学习re ...

  4. Linux基础学习-数据备份工具Rsync

    数据备份工具rsync 作为一个系统管理员,数据备份是非常重要的,如果没有做好备份策略,磁盘损坏了,那么你的数据将全部丢失,所以在日常的维护工作中,一定要时刻牢记给数据做备份. rsync不仅可以可以 ...

  5. Python包,json&pickle,time&datetime,random模块

    补充内容: 解决模块循环导入的两种方法:(不得已而为之,表示程序结构不够严谨) 将导入模块语句放在文件最下方 保证语句导入之前函数内代码能够被执行 将导入语句放进函数体内 使其不影响整个函数的运行 包 ...

  6. (转)Objective-C语言--属性和实例变量

    本文转自http://blog.csdn.net/addychen/article/details/39525681 使用Objective-C一段时间了,一直没有弄清楚在Objective-C中属性 ...

  7. 基础训练 FJ的字符串

    FJ的字符串 #include<iostream> #include<string.h> using namespace std; int main(){ string str ...

  8. php expat+DOM+SimpleXML XML读取

    XML 文件 将在我们的例子中使用下面的 XML 文件: <?xml version="1.0" encoding="ISO-8859-1"?> & ...

  9. PC上测试移动端网站和模拟手机浏览器

    一.Chrome*浏览器 chrome模拟手机总共有四种方法,原理都一样,通过伪装User-Agent,将浏览器模拟成Android设备.以下标星的为推荐方法. 1.新建Chrome快捷方式 右击桌面 ...

  10. luogu2146 [NOI2015]软件包管理器

    安装就把根节点到它全设为 1 删除就把以它为根的子树全设为 0 记得标记初始化为-1,因为标记是 0 的情况也是要处理的. #include <iostream> #include < ...