[Luogu 3966] TJOI 2013 单词
<题目链接>
经典ACAM。
注意单词之间添加字符,以及对重复单词的处理。
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int MAXN=210,MAXM=1000010,MAXL=1000010;
char str[MAXL],p[MAXN+MAXL];
int n;
class ACAM
{
public:
ACAM(void)
{
cnt=0;
memset(mp,0,sizeof mp);
memset(ans,0,sizeof ans);
memset(s,0,sizeof s);
}
void Insert(char *str,int k)
{
int x=0;
for(int i=0,t;str[i];++i)
{
if(!s[x].c[t=num(str[i])])
s[x].c[t]=++cnt;
x=s[x].c[t];
}
if(!s[x].index)
s[x].index=k;
mp[k]=s[x].index;
}
void GetFail(void)
{
queue<int> q;
for(int i=0,t;i<26;++i)
if(t=s[0].c[i])
q.push(t);
while(!q.empty())
{
int x=q.front();
q.pop();
for(int i=0,t,f;i<26;++i)
if(t=s[x].c[i])
{
f=s[t].fail=s[s[x].fail].c[i];
s[t].lst=s[f].index?f:s[f].lst;
q.push(t);
}
else
s[x].c[i]=s[s[x].fail].c[i];
}
}
void Search(char *p)
{
int x=0;
for(int i=0;p[i];++i)
{
if(p[i]==' ')
{
x=0;
continue;
}
if(s[x=s[x].c[num(p[i])]].index)
++ans[s[x].index];
for(int j=s[x].lst;j;j=s[j].lst)
++ans[s[j].index];
}
for(int i=1;i<=n;++i)
printf("%d\n",ans[mp[i]]);
}
private:
int cnt,mp[MAXN],ans[MAXN];
struct node
{
int index,fail,lst,c[26];
}s[MAXM];
int num(char c)
{
return c-'a';
}
}AC;
int main(int argc,char *argv[])
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%s",str);
AC.Insert(str,i);
strcat(p,str);
strcat(p," ");
}
AC.GetFail();
AC.Search(p);
return 0;
}
谢谢阅读。
[Luogu 3966] TJOI 2013 单词的更多相关文章
- [TJOI 2013]单词
Description 题库链接 给出一篇文章的所有单词,询问每个单词出现的次数. 单词总长 \(\leq 10^6\) Solution 算是 \(AC\) 自动机的板子,注意拼成文章的时候要在单词 ...
- bzoj-3170 3170: [Tjoi 2013]松鼠聚会(计算几何)
题目链接: 3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MB Description 有N个小松鼠,它们的家用一个点x,y表 ...
- BZOJ3170: [Tjoi 2013]松鼠聚会
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 531 Solved: 249[Submit][Statu ...
- BZOJ 3170: [Tjoi 2013]松鼠聚会 切比雪夫距离
3170: [Tjoi 2013]松鼠聚会 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- BZOJ 3170: [Tjoi 2013]松鼠聚会( sort )
题目的距离为max(|x1-x2|, |y1-y2|) (切比雪夫距离). 切比雪夫距离(x, y)->曼哈顿距离((x+y)/2, (x-y)/2) (曼哈顿(x, y)->切比雪夫(x ...
- [Tjoi 2013]松鼠聚会
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1318 Solved: 664[Submit][Stat ...
- Luogu 1979 NOIP 2013 华容道(搜索,最短路径)
Luogu 1979 NOIP 2013 华容道(搜索,最短路径) Description 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面 ...
- Bzoj 3170[Tjoi 2013]松鼠聚会 曼哈顿距离与切比雪夫距离
3170: [Tjoi 2013]松鼠聚会 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1318 Solved: 664[Submit][Stat ...
- [BZOJ 3173] [TJOI 2013] 最长上升子序列(fhq treap)
[BZOJ 3173] [TJOI 2013] 最长上升子序列(fhq treap) 题面 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数 ...
随机推荐
- 小茜(xi)的减肥之路
Description 今天,多年未见的小钧和小江在街头偶遇,小江想看看当年那个蠢蠢的小钧有没有变聪明一些,他灵机一动,说:“当初小茜立了个flag,说一定要减肥,她想着第一天跑一米,第二天跑两米,第 ...
- 异常概念和处理机制,try-catch-finally,throw和throws,自定义异常
异常概念和处理机制 什么是异常? 所谓异常就是指在程序运行的过程中发生的一些不正常事件.(如除0溢出,数组下标越界,所要读取的文件不存在); 异常导致的后果? Java程序的执行过程中如出现异常事件, ...
- TCP系列17—重传—7、SACK下的重传
我们之前介绍SACK选项的时候说过,SACK可以把接收端系列号空间的洞反映给发送端,因此发送端可以更充分的理解接收端的情况,而进行更好的重传恢复过程.这种过程有时候也叫做advanced loss r ...
- windows批处理学习(字符换操作)---04
转自:https://www.cnblogs.com/DswCnblog/p/5432326.html 1.截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特 ...
- KindEditor是一套很方便的html编译器插件
KindEditor是一套很方便的html编译器插件.在这里做一个简单的使用介绍. 首先在官网上下载最新的KindEditor文件(里面有jsp,asp等不同版本文件夹,可以删掉你不需要的版本), 把 ...
- Runtime之字典转模型实战
Runtime之字典转模型实战 先来看看怎么使用Runtime给模型类赋值 iOS开发中的Runtime可谓是功能强大,同时Runtime使用起来也是非常灵活的,今天博客的内容主要就是使用到一丁点的R ...
- HUAS 1483 mex(莫队算法)
考虑莫队算法,对于区间减小的情况,可以O(1)解决.对于区间增加的情况,可能需要O(n)解决.好在数据不卡莫队. 1200ms过了. 离线+线段树 760ms过了. # include <cst ...
- 【bzoj1231】[Usaco2008 Nov]mixup2 混乱的奶牛 状态压缩dp
题目描述 混乱的奶牛[Don Piele, 2007]Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S_i <= ...
- CentOS 查看系统内核和版本
1.uname 命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”. [root@bigdata-senior01 ~]# uname -a Linux bigdata-senior ...
- lighttpd - 配置
Lighttpd core 配置 connection.kbytes-per-second 限制每一个链接的速度etag.use-inode Etag使用i ...