在我没用hash之前,一直TLE,字符串处理时间过长,用了hash之后一直CE,(请看下图)我自从经历我的字典树G++MLE,C++AC以后,一直天真的用C++,后来的CE就是因为这个,G++才支持这个hash...

#include<cstdio>
#include<iostream>
#include<string.h>
int hash[];
struct TrieNode
{
int no;
TrieNode *next[];
} node[];
TrieNode *root = &node[];
int cnt,result[];
char word[],s[];
void init()
{
hash['a']=hash['b']=hash['c']=;
hash['d']=hash['e']=hash['f']=;
hash['g']=hash['h']=hash['i']=;
hash['j']=hash['k']=hash['l']=;
hash['m']=hash['n']=hash['o']=;
hash['p']=hash['q']=hash['r']=hash['s']=;
hash['t']=hash['u']=hash['v']=;
hash['w']=hash['x']=hash['y']=hash['z']=;
}
void initRoot()
{
int i;
for(i=; i<; i++)
{
root->next[i]=NULL;
}
}
void insert(char str[],int num)
{
TrieNode *p = root;
int len=strlen(str),i,j;
for(i=; i<len; i++)
{
if(p->next[str[i]-'']==NULL)
{
p->next[str[i]-'']=&node[cnt];
for(j=; j<; j++)node[cnt].next[j]=NULL;
node[cnt].no=-;
cnt++;
}
p=p->next[str[i]-''];
}
p->no=num;
}
/** 查询一个字母字符串对应的数字串 */
void query(char str[])
{
int len=strlen(str),i;
TrieNode *p=root;
for(i=; i<len; i++)
{
p=p->next[hash[str[i]]];
if(p==NULL)break;
}
if(p==NULL)return;
else
{
if(p->no!=-)result[p->no]++;
}
}
int main()
{
int t,m,n,i;
scanf("%d",&t);
init();
while(t--)
{
cnt=;
initRoot();
memset(result,,sizeof(result));
scanf("%d%d",&n,&m);
for(i=; i<n; i++)
{
scanf("%s",word);
insert(word,i);
}
for(i=; i<m; i++)
{
scanf("%s",s);
query(s);
}
for(i=; i<n; i++)
{
printf("%d\n",result[i]);
}
}
return ;
}

最新文章

  1. Angularjs 的 ngInfiniteScroll 的使用方法
  2. C++之再续前缘(二)——类和对象(上)
  3. 9.22 JS脚本语言DOM
  4. 【BZOJ1051】1051: [HAOI2006]受欢迎的牛 tarjan求强连通分量+缩点
  5. ACM之Java速成(1)
  6. [python] No module named _sysconfigdata_nd
  7. Eclipse(PHP、JAVA)的快捷键大全
  8. winow.open打开窗口被拦截的解决方法
  9. 关于C#中readonly
  10. bzoj4828 [Hnoi2017]大佬
  11. 老男孩Python全栈开发(92天全)视频教程 自学笔记05
  12. Qualcomm平台camera调试移植入门
  13. 为什么面试你要25K,HR只给你20K?
  14. Cookie丢失的原因
  15. PHP中的自动加载
  16. js常见知识点1.ajax相关
  17. scrollIntoView将指定元素定位到浏览器顶部,底部,中间
  18. CSS3小清新下拉菜单 简易大方
  19. 分享一个自定义的 console 类,让你不再纠结JS中的调试代码的兼容
  20. C# 图片和64位编码的转换

热门文章

  1. OpenVPN客户端解析
  2. 您可能无法使用服务器管理器,如果两个线程同时访问 IIS 管理 IIS 的修补程序
  3. Opencv2系列学习笔记10(提取连通区域轮廓) 另一个
  4. JavaScript高级程序设计:第二十一章
  5. ios控件 UIControl
  6. vs2013执行Add-Migration出现的问题
  7. 【Holograms 101D】一步步用Unity 开发 Hologram
  8. Perl资料
  9. centos 6.5常见lib库安装
  10. HTML day03表格与表单