[bzoj3172][Tjoi2013]单词
来源:互联网 发布:classic动作数据mmd 编辑:程序博客网 时间:2024/05/29 13:50
3172: [Tjoi2013]单词
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 3845 Solved: 1859
[Submit][Status][Discuss]
Description
某人读论文,一篇论文是由许多单词组成。但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次。
Input
第一个一个整数N,表示有多少个单词,接下来N行每行一个单词。每个单词由小写字母组成,N<=200,单词长度不超过10^6
Output
输出N个整数,第i行的数字表示第i个单词在文章中出现了多少次。
Sample Input
3
a
aa
aaa
Sample Output
6
3
1
HINT
Source
利用fail指针的特点
#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;const int N = 1000000 + 5;const int P = 30;int n;int sz=0,ans[N],num[N];int query[N],cnt,fail[N],ch[N][P];char s[N];void insert( int &yu ){ int now = 0, len = strlen(s); for( int i = 0; i < len; i++ ){ int x = s[i] - 'a'; if( !ch[now][x] ) ch[now][x] = ++sz; now = ch[now][x]; ans[now]++; } yu = now;}queue<int> q;void failure(){ while( !q.empty() ){ q.pop(); } for( int i = 0; i < 26; i++ ) if( ch[0][i] ) q.push(ch[0][i]); while( !q.empty() ){ int now = q.front(); q.pop(); query[++cnt] = now; for( int i = 0; i < 26; i++ ){ if( !ch[now][i] ){ ch[now][i] = ch[fail[now]][i]; continue; } fail[ch[now][i]] = ch[fail[now]][i]; q.push(ch[now][i]); } }}int main(){ scanf("%d", &n); for( int i = 1; i <= n; i++ ){ scanf("%s", s); insert(num[i]); } failure(); for( int i = cnt; i >= 1; i-- ) ans[fail[query[i]]] += ans[query[i]]; for( int i = 1; i <= n; i++ ) printf("%d\n",ans[num[i]]); return 0;}
0 0
- bzoj3172: [Tjoi2013]单词
- 【AhoCorasickAutoMata】bzoj3172[Tjoi2013]单词
- 【TJOI2013】【BZOJ3172】单词
- [BZOJ3172][Tjoi2013]单词
- [BZOJ3172][Tjoi2013]单词
- bzoj3172【TJOI2013】单词
- BZOJ3172 TJOI2013 单词
- [bzoj3172][TJOI2013]单词
- bzoj3172: [Tjoi2013]单词
- BZOJ3172: [Tjoi2013]单词
- bzoj3172: [Tjoi2013]单词
- bzoj3172 [Tjoi2013]单词
- [bzoj3172][Tjoi2013]单词
- bzoj3172: [Tjoi2013]单词
- [BZOJ3172]TJOI2013单词|AC自动机
- 【bzoj3172】【TJOI2013】【单词】【AC自动机】
- BZOJ3172——[Tjoi2013]单词
- [BZOJ3172] [TJOI2013] 单词 - AC自动机
- c:if标签因多余空格导致不起作用
- 自定义字符串大小判断my_strcmp()
- mysql数据库备份复制相关
- Android 输入法布局改变的页面适配
- 前端之js数组方法
- [bzoj3172][Tjoi2013]单词
- linux 淘宝npm镜像
- USguns
- 替换Unity脚本模板
- 机器学习(周志华) 参考答案 第一章 绪论
- maven仓库加载问题
- Toast工具类
- 敬畏生命,懂得感恩
- 实践中所学