当前位置: 首页 > news >正文

【模板】ac自动机

本来是真的特别不想写这个的 但是有段时间洛谷天天智推这个可能是我太菜了

然后觉得这个也不难 乘着今早没事写下 来这保存下 方便下次食用

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 struct Node{int to[26],ed,f;}a[1<<20];
 4 string s;
 5 int pre[1<<20];
 6 int n,pos,tot,t,h,tt,g;
 7 int main(){
 8     scanf("%d",&n);
 9     for (register int i=1;i<=n;++i){
10         cin>>s;pos=0;
11         for (register int j=0;j<s.size();++j){
12             tt=s[j]-'a';
13             if (!a[pos].to[tt]) a[pos].to[tt]=++tot;
14             pos=a[pos].to[tt];
15         }
16         ++a[pos].ed;
17     }
18     for (register int i=0;i<26;++i) 
19         if (a[0].to[i])
20             pre[++t]=a[0].to[i];
21     while (h!=t){
22         g=pre[++h];
23         for (register int i=0;i<26;++i)
24             if (a[g].to[i])
25                 a[a[g].to[i]].f=a[a[g].f].to[i],pre[++t]=a[g].to[i];
26             else a[g].to[i]=a[a[g].f].to[i];
27     }
28     cin>>s;
29     pos=tot=0;
30     for (register int i=0;i<s.size();++i){
31         pos=a[pos].to[s[i]-'a'];
32         for (register int j=pos;j&&a[pos].ed;j=a[j].f)
33             tot+=a[j].ed,a[j].ed=0;
34     }
35     printf("%d\n",tot);
36     return 0;
37 }

 

转载于:https://www.cnblogs.com/wjnclln/p/9913038.html

相关文章:

  • ELK实时日志分析平台环境部署--完整记录
  • 前端学习路线
  • mysql字段名与关键字重复解决办法
  • 一步一步实现web程序信息管理系统之一----登陆界面实现
  • nginx反向代理解决跨域问题
  • 云架构师进阶攻略
  • 辗转相除法求最大公约数(c++)
  • Customize Acrylic Brush in UWP Applications(在UWP中自定义亚克力笔刷)
  • Java 基础拾遗
  • Docker Swarm 介绍 or 工作原理
  • go学习笔记-错误处理
  • python中各种数据类型
  • Going Deeper with Convolutions阅读摘要
  • layui的table的使用 三
  • js this
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 2017 前端面试准备 - 收藏集 - 掘金
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • C语言笔记(第一章:C语言编程)
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • iOS 系统授权开发
  • JavaScript服务器推送技术之 WebSocket
  • JSDuck 与 AngularJS 融合技巧
  • SQLServer插入数据
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Unix命令
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 读懂package.json -- 依赖管理
  • 仿天猫超市收藏抛物线动画工具库
  • 因为阿里,他们成了“杭漂”
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #laravel 通过手动安装依赖PHPExcel#
  • $.ajax()参数及用法
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (三)Honghu Cloud云架构一定时调度平台
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .gitignore文件_Git:.gitignore
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Framework .NET Core与 .NET 的区别
  • .NET MVC之AOP
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .Net 应用中使用dot trace进行性能诊断
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET与 java通用的3DES加密解密方法
  • @Autowired多个相同类型bean装配问题
  • @Controller和@RestController的区别?
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [20190113]四校联考
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [BetterExplained]书写是为了更好的思考(转载)
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [CERC2017]Cumulative Code
  • [CVPR2021]Birds of a Feather: Capturing Avian Shape Models from Images