![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Trie/AC自动机
jzq233jzq
这个作者很懒,什么都没留下…
展开
-
戏说Trie字典树算法+Luogu2580 于是他错误的点名开始了
首先讲一下Trie这个东西(其实很简单) 在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。以上摘自百度百科 这就像英文字典一样,每个字母按照字典序排 举个例子,比如我们要插入几个字符串:原创 2017-03-15 19:57:59 · 542 阅读 · 0 评论 -
可持久化Trie——51nod1295 XOR key
题面:51nod1295 第一次yy出了可持久化Trie哈哈哈…… 这题xor其实就是老套路了,其实就是在Trie树上跑一下就好了 我们按照从高位到低位的顺序找,如果这一个二进制位有不同的,那么就往这边走,xor值加上2i2^i即可 这题的关键就是区间的问题了,所以就是一个可持久化Trie就可以了 具体是怎么yy出来的?按照主席树的写法就可以了#include <cstdio>#incl原创 2017-09-23 22:26:21 · 216 阅读 · 0 评论 -
Trie——Luogu3879 [TJOI2010]阅读理解
题面:Luogu3879 一开始我感觉好像可以用set搞一搞的 然后发现迭代器我实在不太会用。。。 而且到底set怎么存我也不大有数 后来想了想,还是Trie靠谱 就是在结束标记记录一下这里有多少文章有这个单词就好了 感觉set原理也是一样的#include <cstdio>#include <algorithm>#include <cmath>#include <cstring>原创 2017-08-26 19:16:11 · 410 阅读 · 0 评论 -
AC自动机——HDU2222(题号很鬼畜)Keywords Search
http://acm.hdu.edu.cn/showproblem.php?pid=2222 这道题的算法就是我之前在trie中提到的高深算法——AC自动机!!! 千万不要以为AC自动机就是能使你的程序自动Accepted的东西。。。 具体的算法讲解请看我同学的详细讲解:http://blog.csdn.net/fop_zz/article/details/62418370 这题就是裸的的A转载 2017-03-16 15:50:20 · 392 阅读 · 0 评论 -
Trie——51nod1526 分配笔名
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1526 这题主线思路肯定是Trie对吧 定义笔名和真名之间的相关度是他们之间的最长公共前缀 题目要求分配笔名,使得匹配质量最大 那么我们可以先按照真名建立一颗字典树,并且在经过的一条路线上的标记+1 然后把所有笔名依次在字典树上匹配,从根开始遍历,如果当前标记大于原创 2017-03-16 19:49:58 · 326 阅读 · 1 评论 -
Trie——BZOJ4567/Luogu3294 [Scoi2016]背单词
http://www.lydsy.com/JudgeOnline/problem.php?id=4567 https://www.luogu.org/problem/show?pid=3294 比较有趣的Trie题目之一(而且还挺新的) 我们可以按照各串的后缀建一棵Trie树,然后dfs序遍历出需要的点并标记(指那些位于各串结尾的节点,这些是有用的) 接着我们来考虑题目中的三种情况:如果存原创 2017-03-17 09:51:12 · 436 阅读 · 0 评论 -
Trie——Luogu2292/BZOJ1212 [HNOI2004]L语言
https://www.luogu.org/problem/show?pid=2292 http://www.lydsy.com/JudgeOnline/problem.php?id=1212 一题Trie字典树 这题原本标算是AC自动机!!!(好像说是因为文章长度有1M) 其实也不用AC自动机,Trie上面乱搞也能过。。。 (会不会是出题人为了吓吓人写了文章长度233) 我们开个数组f原创 2017-03-17 14:38:07 · 293 阅读 · 0 评论 -
AC自动机——Luogu3121 [USACO15FEB]审查(黄金)Censoring (Gold)
https://www.luogu.org/problem/show?pid=3121 这题嘛。。。AC自动机 我们在匹配的时候可以开一个栈,一开始栈内为空,匹配时依次加入字母的位置,当匹配完成时把这个单词弹出继续操作就好了 其他没啥变化 具体看这段代码啦inline void getans(int l){ int now=0; for(int i=1;i<=l;i++){原创 2017-03-26 19:46:53 · 379 阅读 · 0 评论 -
Trie+拓扑排序——Luogu3065 [USACO12DEC]第一!First!
题面:Luogu3065 我们首先考虑一种情况,如果某一字符串的某个前缀是另外一个字符串,这个字符串不可能字典序最小。 所以我们来考虑相同前缀的问题。如果某一字符串字典序最小,和它同前缀的字符串的相同前缀之后一位字母的大小顺序就可以确定。如果这一系列的关系没有矛盾的话,这个串就可以是最小的,反之不行。 判断有无矛盾的话我们可以通过建连边跑拓扑排序解决。至于找前缀这种问题,交给Trie树就好了。#includ原创 2017-08-13 16:45:45 · 504 阅读 · 0 评论 -
后缀数组/AC自动机——BZOJ3172 [Tjoi2013]单词
题面:BZOJ3172 首先把论文给造出来是吧。。。(单词中间加空格好了) 然后在这篇文章(其实是一串字符串)求Height(后缀数组实现) 把Height数组求出来之后我们对于每个单词暴力向左向右找相邻的lcp,如果Height[i]大于等于单词长的话,那么这个串在那个后缀中出现了(而且是在前缀位置),如果小于了那就说明后面的都没有了,直接跳出 因为相邻的Height肯定比不相邻的Heig原创 2017-06-09 14:21:11 · 282 阅读 · 0 评论