Hat’s Words
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 19500    Accepted Submission(s): 6867Problem Description
A hat’s word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary.
You are to find all the hat’s words in a dictionary.Input
Standard input consists of a number of lowercase words, one per line, in alphabetical order. There will be no more than 50,000 words.
Only one case.Output
Your output should contain all the hat’s words, one per line, in alphabetical order.Sample Input
a
ahat
hat
hatword
hziee
wordSample Output
ahat
hatwordAuthor
戴帽子的Recommend
Ignatius.L   |   We have carefully selected several similar problems for you:  1075 1671 1298 1800 2846 

T

这道题也是比较简单的trie树的题,开始觉得很懵逼,最后才发现其实暴力就可以

对于每个单词枚举断点,然后查前后是否都存在

我们来计算下时间复杂度,假设n个单词,每个单词长度最大为m

那么插入O(nm);

查询时候O(nmm);

总复杂度O(nm+m2n);

这道题的n是50000,m假设是30,那么很明显可以过

上代码

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 #define idx(i) (i-'a')
 5 #define N 50011
 6 using namespace std;
 7 char in[N][300];
 8 int cnt=1,pp;
 9 struct TRIE{int nxt[30],cnt;}tree[N*300];
10 inline int regist(){return cnt++;}
11 void insert(char *now)
12 {
13     int c,rt=0,len=strlen(now);
14     for(int i=0;i<len;i++)
15     {
16         c=idx(now[i]);
17         if(!tree[rt].nxt[c])
18             tree[rt].nxt[c]=regist();
19         rt=tree[rt].nxt[c];
20     }
21     tree[rt].cnt=1;
22 }
23 bool find(char *now,int st,int ed)
24 {
25     int rt=0;
26     for(int i=st-1;i<ed;i++)
27     {
28         if(!tree[rt].nxt[idx(now[i])])return 0;
29         rt=tree[rt].nxt[idx(now[i])];
30     }
31     return tree[rt].cnt;
32 }
33 int main()
34 {
35     while(scanf("%s",in[++pp]+1)!=EOF)insert(in[pp]+1);
36     for(int i=1;i<pp;i++)
37     {
38         int len=strlen(in[i]+1);
39         for(int j=1;j<=len;j++)
40             if(find(in[i]+1,1,j)&&find(in[i]+1,j+1,len)){printf("%s\n",in[i]+1);break;}
41     }
42     return 0;
43 }

转载于:https://www.cnblogs.com/Qin-Wei-Kai/p/10224182.html

【trie树】HDU1247Hat’s Words相关推荐

  1. usaco Cowxor (trie 树)

    没想到trie树还可以用在这上面,厉害厉害. [分析]这是字母树的经典应用.首先因为是求xor的最大值,可以用前缀和计算xor值,然后n^2枚举即可. [cpp] view plaincopy for ...

  2. 字符串匹配算法 -- AC自动机 基于Trie树的高效的敏感词过滤算法

    文章目录 1. 算法背景 2. AC自动机实现原理 2.1 构建失败指针 2.2 依赖失败指针过滤敏感词 3. 复杂度及完整代码 1. 算法背景 之前介绍过单模式串匹配的高效算法:BM和KMP 以及 ...

  3. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全

    文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...

  4. POJ 2418 Hardwood Species(trie 树)

    题目链接 开始想用map的,字典序不会搞,还是老老实实的用trie树把.好久没写了,忘得差不多了. 1 #include <iostream> 2 #include <cstdio& ...

  5. 【bzoj3261】最大异或和 可持久化Trie树

    题目描述 给定一个非负整数序列 {a},初始长度为 N.        有M个操作,有以下两种操作类型: 1.A x:添加操作,表示在序列末尾添加一个数 x,序列的长度 N+1. 2.Q l r x: ...

  6. 算法 | 动画+解析,轻松理解「Trie树」

    Trie这个名字取自"retrieval",检索,因为Trie可以只用一个前缀便可以在一部字典中找到想要的单词. 虽然发音与「Tree」一致,但为了将这种 字典树 与 普通二叉树 ...

  7. 浅谈树形结构的特性和应用(上):多叉树,红黑树,堆,Trie树,B树,B+树......

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 上篇文章我们主要介绍了线性数据结构,本篇233酱带大家看看 无所不 ...

  8. Trie树合并 + SG函数 ---- BZOJ4730. Alice和Bob又在玩游戏(动态开点Trie 树上全局异或标记 + 合并 + 博弈论)

    题目大题 题目大意: 解题思路: 首先我们对于子树u的SG函数为SG函数为SG函数为 ⨁是异或和\bigoplus是异或和⨁是异或和 SG[u]=mex{⨁w∈(w的父亲在u到v的路径上)SG[w]∣ ...

  9. SZUACM集训字符串基础总结: 字符串最小表示 ,KMP, EXKMP, Manracher, Trie树,字符串的hash; 附带一写常见的运用技巧,邝斌大佬的板子和例题[持续更新]

    第一部分 字符串的匹配<-------->KMP 模式匹配:子串的定位运算称为串的模式匹配或串匹配. 假设有两个串S,T,设S为主串,也称正文串,T为子串,也称为模式,在主串S中查找与模式 ...

最新文章

  1. linux服务器性能监控命令汇总(一)
  2. 关于Jdk7与Jdk8对Collections进行分组的区别
  3. win7源码运行odoo8.0错误
  4. 剑指-从尾到头打印链表
  5. 2017.9.10 土地购买 思考记录
  6. C-Wandering Robot 模拟
  7. 如何 Get 机器学习必备的算法技能? | 技术头条
  8. 浅谈FTP服务的几个知识点
  9. 转载windows的网络错误问题,备需要时查看
  10. 计算单应性矩阵 python_计算视觉——相机参数标定法
  11. 前端和后端的英文_前端开发与架构师
  12. 金融科技在互联网金融行业性风险防范领域的应用
  13. Windows命令行快速启动快捷方式
  14. 如何使用Python进行投资收益和风险分析
  15. 进阶篇:4.2)DFA设计指南:优化装配工序
  16. 申报快结束!2022年武汉经开区在孵企业房租申报奖励补贴补助、申报条件材料
  17. Julia教程:Julia语言入门
  18. stata半个小时入门篇
  19. 计算机病毒按危害程度分类可分为,计算机病毒按其危害程度可分为
  20. 如何利用API实现行式报表后台导入excel数据入库

热门文章

  1. eclipse查看git地址_git下载及使用
  2. php strrchar,php文件上传
  3. linux python2.7安装教程_Linux中RedHat下安装Python2.7开发环境的详细教程-学派吧-
  4. tf.layers.Dense与 tf.layers.dense的区别
  5. HTML中的5种空格表示,HTML中的5种空格各表示的意义
  6. hibernate 无法保存timestamp_为什么很多人不愿意用hibernate了?
  7. 抓取异步数据(AJAX)笔记
  8. 信息系统项目管理师考试答题卡样式【下载PDF】
  9. 笔记-高项案例题-2016年下-项目收尾
  10. Java开发中模拟接口工具moco的使用