题意(自己编的):

给你一篇文章,包含n个长度为Si的单词,然后给你m组询问,每次询问一个单词在这篇文章中作为单词前缀出现的次数。n <=10^6,m<=10^6,Si<=100。

还是用字典树,在插入的时候记录每一个节点被访问的次数,在查找的时候用指针p找到当前单词,这个单词的最后一个字母到的节点所存的次数就是它作为前缀出现的次数。

代码:

 #include<bits/stdc++.h>
using namespace std;
const int M=1e6+;
char word[];
int n,m,trie[M][],sum=,tim[M];
void insert(char a[])
{
int len=strlen(a),p=;
for(int i=;i<len;i++)
{
int ch=a[i]-'a';
if(trie[p][ch]==)trie[p][ch]=++sum;
p=trie[p][ch];
//if(i!=len-1)//如果是严格前缀的话
tim[p]++;//tim数组记录每个节点被访问过的次数
}
}
int find(char a[])
{
int len=strlen(a),p=;
for(int i=;i<len;i++)
{
int ch=a[i]-'a';
p=trie[p][ch];
if(p==)return ;
}
return tim[p];
}
int main()
{
cin>>n>>m;
for(int i=;i<=n;i++)
{
cin>>word;
insert(word);
}
for(int i=;i<=m;i++)
{
cin>>word;
printf("%d\n",find(word));
}
return ;
}

最新文章

  1. 《Entity Framework 6 Recipes》中文翻译系列 (31) ------ 第六章 继承与建模高级应用之自引用关联
  2. 如何让Log4net日志文件按每月归成一个文件夹,StaticLogFileName参数的用法
  3. C++ 类知识点
  4. 自定义UICollectinviewFlowLayout,即实现瀑布流
  5. VMnet1和V8
  6. lucene教程简介
  7. LeetCode之Balanced Binary Tree 平衡二叉树
  8. 关于Android Studio升级到2.0后和Gradle插件不兼容的问题
  9. UVa673 Parentheses Balance
  10. PHP: 深入pack/unpack 字节序
  11. error userinfo error pos 5 友盟分享 网页分享(无新浪微博客户端)
  12. CSS3+HTML5特效9 - 简单的时钟
  13. ASP.NET Web API框架揭秘:路由系统的几个核心类型
  14. Django学习(3)模板定制
  15. JavaSE基础篇—流程控制语句
  16. Beta冲刺 第二天
  17. mysql读写分离总结
  18. 通过groovy表达式拓展oval——实现根据同一实体中的其他属性值对某个字段进行校验
  19. Redis 个人理解总结
  20. helm 更改为国内源

热门文章

  1. 动态规划:Ignatius and the Princess IV
  2. T1503 愚蠢的宠物 codevs
  3. Spring的AOP AspectJ切入点语法详解(转)
  4. linux显示系统时间
  5. mysql too many connection 解决办法
  6. python执行系统命令的几种方法
  7. 学习LaTex
  8. HTML大文件上传(博客迁移)
  9. Linux环境搭建:1. 安装VMware
  10. Java对象的创建过程