HDU1251 统计难题【字典树】
来源:互联网 发布:数据分析师职业规划 编辑:程序博客网 时间:2024/05/22 04:37
题意:给出两个文本,问第二个文本某个字符串为前缀的单词数量(第一个文本中)
思路:map大法好,但不利于学算法,字典树可做
#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<stdlib.h>#include<math.h>#include<vector>#include<list>#include<map>#include<stack>#include<queue>#include<algorithm>#include<numeric>#include<functional>using namespace std;typedef long long ll;const int maxn = 1e6+5;struct data{int val;int next[26];}node[maxn];int cnt,ans;char s[maxn];void init(int i){node[i].val = 0;memset(node[i].next,-1,sizeof node[i].next);}void add(int x,int w){node[w].val++;if(s[x] == '\0')return;if(node[w].next[s[x]-'a'] == -1){init(cnt);node[w].next[s[x]-'a'] = cnt;cnt++;add(x+1,cnt-1);}elseadd(x+1,node[w].next[s[x]-'a']);}void fid(int x,int w){if(s[x] == '\0'){ans = node[w].val;return;}if(node[w].next[s[x]-'a'] == -1)return;elsefid(x+1,node[w].next[s[x]-'a']);}int main(void){init(0);cnt = 1;while(gets(s)){if(s[0] == '\0') break;add(0,0);}while(gets(s)){ans = 0;fid(0,0);printf("%d\n",ans);}return 0;}
阅读全文
0 0
- hdu1251 统计难题 字典树
- 【字典树】 hdu1251 统计难题
- hdu1251 统计难题(字典树)
- 统计难题(hdu1251字典树)
- hdu1251 统计难题 (字典树)
- HDU1251统计难题(字典树)
- hdu1251统计难题(字典树)
- Hdu1251 - 统计难题 - 字典树
- hdu1251 统计难题 【字典树】
- HDU1251 统计难题【字典树】
- 【字典树】HDU1251统计难题
- hdu1251 统计难题 字典树
- hdu1251 统计难题 字典树
- hdu1251统计难题+字典树
- HDU1251 统计难题【字典树】
- hdu1251 统计难题(字典树)
- hdu1251统计难题(字典树)
- HDU1251 统计难题 解题报告--字典树
- JSON和JSONP的区别
- hdu6156 数位dp
- BFS/DFS 模板 代码
- JMX 入门(二)
- 3528:最小新整数
- HDU1251 统计难题【字典树】
- 乐观锁和悲观锁
- 基于FPGA的CORDIC算法实现——Verilog版
- 传递函数依赖
- Codeforces Round #411 D. Minimum number of steps (贪心。)
- Android(root)设备HTTPS请求时间校准
- Eclipse中安装Hibernate的插件
- kafka + spark streaming 实时读取计算 nginx 日志,存储结果到 mongodb/mysql
- FZU2283-Tic-Tac-Toe