hdu 1251 字典树模板题 ---多串 查找单词出现次数
来源:互联网 发布:java线程优先级设置 编辑:程序博客网 时间:2024/05/17 06:36
这道题题目里没有给定数据范围 我开了2005 疯狂的WA
然后开了50000, A掉 我以为自己模板理解错 然后一天没吃饭,饿得胃疼还是想着把这题A掉再去吃,谁知居然是这种问题,,,呵呵~~~
不过记录下这道题学到的方法吧:
for(rt = 0; *s; rt = nxt, ++s) { nxt=tree[rt][*s-tb]; if(!nxt) { nxt=tree[rt][*s-tb]=top; memset(tree[top],0,sizeof(tree[top])); top++; } tree[nxt][tk]++;////////// }//////////////处,如果改为tree[rt][tk]表示某个节点有几个孩子,tree[nxt][tk]++经过当前字母的单词个数
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int tk=26;const int tb='a';const int MAXN= 500000;int top,tree[MAXN][tk+2];void init(){ top=1; memset(tree[0],0,sizeof(tree[0]));}void Insert(char *s, int Rank=1){ int rt,nxt; for(rt = 0; *s; rt = nxt, ++s) { nxt=tree[rt][*s-tb]; if(!nxt) { nxt=tree[rt][*s-tb]=top; memset(tree[top],0,sizeof(tree[top])); top++; } tree[nxt][tk]++; }}int sea(char *s){ int rt; for(rt=0;rt=tree[rt][*s-tb];) { if(*(++s)==0)return tree[rt][tk]; } return 0;}char str[150],pat[150];int main(){ //freopen("hdu1251.txt","r",stdin); char cc; int ans=0; init(); while(gets(str)&&str[0]) { Insert(str); } while(~scanf("%s",pat)) { //cout << pat << endl; printf("%d\n",sea(pat)); } return 0;}
1 0
- hdu 1251 字典树模板题 ---多串 查找单词出现次数
- 字典树的妙用(求单词出现的次数)
- 利用Trie树,来查找单词出现的次数
- 查找单词出现次数[C实现]
- POJ 2418 Hardwood Species 经典字典树 统计单词出现次数
- 查找一个字符串中每个单词的出现次数--Java
- 查找一段英文中各个单词出现的次数
- 查找任意一英文文档,统计其单词出现次数
- 字典树模板 HDU
- Tire树 求出现次数最多单词
- 统计单词出现次数
- 单词的出现次数
- 数据结构&&字典树、单词查找树
- hdu 1251 (字典树 Trie 模板题)
- HDU - 1251 统计难题(字典树模板题)
- HDU 1251 统计难题(字典树模板题)
- HDU 1251 统计难题 (字典树模板题)
- Hdu 1251-统计难题(字典树模板题)
- --jdk5新特性--java学习日记11(高新技术)
- 最近的工程构思
- dd
- 02变量,作用域,内存问题
- 以太网媒体接口MII RMII SMII GMII
- hdu 1251 字典树模板题 ---多串 查找单词出现次数
- java DAO实现
- 网络编程 Socket 【java笔记】
- 三个水杯吧!
- XML自定义检查器语法+约束(1)
- POI导出excel并弹出另存为窗口
- 使用vi打开、编辑多个文件
- Xcode5 工程改名
- Hdu 1595 find the longest of the shortest 枚举+最短路