bzoj4502 串
来源:互联网 发布:有人打电话说淘宝退款 编辑:程序博客网 时间:2024/04/30 13:53
串
题目背景:
bzoj4502
分析:
20% 解法:
暴力枚举前缀,然后两两枚举形成新串,然后有hash判重(用set的宝宝,爆成了5分·····)
50% 解法:
将集合中的所有的字符串构建成一个AC自动机,然后,注意到每个字符串在AC自动机上的匹配路径应该是唯一的,那么我们可以考虑dp,f[i][j][k]表示当前长度为i的字符串,匹配到j状态,第一次的失配的位置在k处,然后直接暴力枚举下一个字符的位置,然后在AC自动机上跑转移就可以了,注意每一次的时的状态的深度一定要大于当前的第一次失配后的匹配长度,否则意味着无法满足题目的信息
100% 解法:
我们可以发现,在上一道题中的在第一次失配前的长度是不需要记录的,那么我们就可以考虑优化状态,f[i][j]表示,当前在第一次失配后的长度,然后当前匹配到的状态,同样注意,每一次失配的状态的深度一定要大于当前的i否则不满足形成前缀。
注意:因为我们一开始就是枚举的在第一次失配后走了多长的长度,但是可能我们可以选择直接在第一次失配后不再往后走,也就是直接将原来的某个字符串的一部分,直接改成一段前缀,想要判断这一个状态是否满足,只需要直接判断当前的fail指针是否为根,如果不是,则就意味着,是可以通过将当前的一段后缀替换为另一段前缀来实现。
Source:
0 0
- bzoj4502 串
- BZOJ4502: 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- 串
- tmux进阶之tmuxinator
- 单向链表 练习3.6 多项式相加
- PAT A1119. Pre- and Post-order Traversals (30)
- 为什么Eureka比ZooKeeper更适合做服务发现?
- 机器学习的本质
- bzoj4502 串
- cdoj1087 基爷的中位数 二分
- java注解机制详解
- Android 不要错过的 7 个完整项目学习
- tomcat fail to start
- 图片上传的跨域问题的几种解决方案和细节及优缺点
- int和Integer的区别
- MySQL-Employees Earning More Than Their Managers
- listview在有headerView的时候自动定位到第一项