【AC自动机】单词(luogu 3966/ybtoj AC自动机-2)
正题
luogu 3966
ybtoj AC自动机-2
题目大意
给你n个单词,让你查询这写单词分别在这n个单词中出现过多少次
解题思路
先用AC自动机建好图,然后每个点的权值为1,然后向nx传递
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 1000100
using namespace std;
int n, w, hd, tl, d[N], v[N], a[N], b[N], nx[N], to[N][30];
char s[N];
int insert(char* s)
{int n = strlen(s+1), now = 0;for (int i = 1; i <= n; ++i){int y = s[i] - 'a';if (!to[now][y]) to[now][y] = ++w;now = to[now][y];b[now]++;//权值为1}return now;
}
void bfs()
{hd = tl = 0;for (int i = 0; i < 26; ++i)if (to[0][i]) d[++tl] = to[0][i];while(hd < tl){int h = d[++hd];for (int i = 0; i < 26; ++i)if (!to[h][i]) to[h][i] = to[nx[h]][i];else nx[to[h][i]] = to[nx[h]][i], d[++tl] = to[h][i];}return;
}
int main()
{scanf("%d", &n);for (int i = 1; i <= n; ++i){scanf("%s", s+1);v[i] = insert(s);}bfs();for (int i = tl; i > 0; --i)//传递{int x = d[i];a[x] = b[x];b[nx[x]] += b[x];}for (int i = 1; i <= n; ++i)printf("%d\n", a[v[i]]);return 0;
}
【AC自动机】单词(luogu 3966/ybtoj AC自动机-2)相关推荐
- 【AC自动机】病毒代码(ybtoj AC自动机-5)
正题 ybtoj AC自动机-5 题目大意 给出若干段01串,问你是否存在一个无限的01串,使得串中不存在给出的01串 解题思路 可以把给出01串用AC自动机处理,然后对每个01串的最后一位打上标记 ...
- 【AC自动机】屏蔽词删除(ybtoj AC自动机-4)
正题 ybtoj AC自动机-4 题目大意 有一个字符串和若干要删除的串(不存在包含关系),每次从前往后搜,搜到第一个要删除的串然后删掉,再从0开始搜 问你最后得到的字符串 解题思路 先把所有删除串丢 ...
- 【AC自动机】前缀匹配(ybtoj AC自动机-3)
正题 ybtoj AC自动机-3 题目大意 给你一个字符串和若干匹配串,问你匹配串的前缀和字符串的最大匹配 解题思路 先把所有匹配串丢进AC自动机,然后拿字符串去跑 每次只在当前位置存下贡献,然后按b ...
- 【Trie】阅读理解(luogu 3879/ybtoj Trie-4)
正题 luogu 3879 ybtoj Trie-4 题目大意 给你n篇文章,还有m个单词,问你这些单词在哪几篇文章中出现过 解题思路 对文章中的单词建Trie,然后那查询的单词去匹配 代码 #inc ...
- 【KMP】周期长度和(luogu 3435/ybtoj KMP-3)
正题 luogu 3435 ybtoj KMP-3 题目大意 定义S的proper前缀为S中非空且len<|S|的前缀,若Q是A的proper前缀,且A是QQ的前缀 现在问你字符串S所有前缀的最 ...
- 【元胞自动机】基于matlab元胞自动机多车道信号交叉口仿真【含Matlab源码 818期】
⛄一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何 ...
- 【元胞自动机】保守策略元胞自动机三车道(不开放辅路,软件园影响)交通流模型matlab源码
一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何顿 ...
- 【元胞自动机】激进策略元胞自动机三车道(开放辅路,软件园影响)交通流模型matlab源码
一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何顿 ...
- 【元胞自动机】基于matlab元胞自动机3D森林火灾模型【含Matlab源码 656期】
⛄一.元胞自动机简介 1 元胞自动机发展历程 最初的元胞自动机是由冯 · 诺依曼在 1950 年代为模拟生物 细胞的自我复制而提出的. 但是并未受到学术界重视. 1970 年, 剑桥大学的约翰 · 何 ...
最新文章
- 大小端存储模式的理解和判断
- Java生鲜电商平台-监控模块的设计与架构
- JS表格分页(封装版)
- *2-3-7-加入field_automation机制
- latex插入表格心得
- 欧拉:他停止了生命和计算
- php text(),PHP+TEXT留言本(一)
- HDU-----(4858)项目管理(模拟)
- python的类和对象例题_Python类、类对象和实例对象、组合、绑定详细讲解
- Java的GUI学习八(键盘码查询器)
- atitit.科技公司的超级武器--超级框架,到底要不要自己的框架??
- 详解Android常用抓包工具的使用方法、技巧-学习笔记20220416
- vs2005编译apache2.2源码调试
- Android的gradle提示Could not resolve com.android.support:support-v4:26+.
- K倍交叉验证配对t检验
- C++一本通题库1010
- 浏览器 - 关于安全证书
- 评价类模型---TOPSIS法
- 通证大局观(二):通证权益解析
- 酷炫的终端模拟器eDEX-UI
热门文章
- Mysql存储过程名规则_sql 存储过程命名规范
- mockito mock void方法_使用 Junit + Mockito 实践单元测试!
- 剑指offer——01二维数组中的查找.
- 对象的单数组表示(用单数组实现链表-不一样的链表实现)
- 数据结构与算法--查找与排序另类用法-旋转数组中的最小数字
- mysql文献综述_文献综述随笔(二十)
- oracle 取英文排序,Oracle中中文、数字,英文混杂形式的字段进行排序的方法
- E. Almost Sorted(构造,递归)
- P2371 [国家集训队]墨墨的等式 同余最短路
- bzoj#3456. 城市规划