hdu 1251 统计难题(字典树)
Posted jpphy0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 1251 统计难题(字典树)相关的知识,希望对你有一定的参考价值。
问题
hdu 1251 统计难题 - https://acm.hdu.edu.cn/showproblem.php?pid=1251
分析
- trie[0]作为尾,无后继
- trie[1]作为空白根
代码
/* hdu 1251 统计难题 */
#include<bits/stdc++.h>
using namespace std;
const int MXN = 500010;
int tot = 1;
struct Trie{int nxt[26], num;} trie[MXN];
void insert(char str[]){
int len = strlen(str);
for(int s = 1, i = 0; i < len; ++i){
if(trie[s].nxt[str[i]-'a'] == 0) trie[s].nxt[str[i]-'a'] = ++tot;
s = trie[s].nxt[str[i]-'a'], ++trie[s].num;
}
}
int query(char str[]){
int s = 1, i, len = strlen(str);
for(i = 0; i < len; ++i){
if(trie[s].nxt[str[i]-'a'] == 0) break;
s = trie[s].nxt[str[i]-'a'];
}
return i == len ? trie[s].num : 0;
}
int main(){
char str[11];
memset(trie, 0, sizeof trie);
while(gets(str) && strlen(str)) insert(str);
while(gets(str) && strlen(str)) printf("%d\\n", query(str));
return 0;
}
以上是关于hdu 1251 统计难题(字典树)的主要内容,如果未能解决你的问题,请参考以下文章