随笔分类 -  字符串处理之字典树

摘要:题意:给一颗字典树,m次查询,每次给出一个字符串,问你该字符串是字典树上多少串的后缀 题解:字典树求广义sam,每次把查询串在sam上跑一遍,最后到达的点的sz就是答案,中途没法走了,就是没有出现过 // pragma GCC optimize(2) // pragma GCC optimize(3 阅读全文
posted @ 2019-04-06 14:20 walfy 阅读(607) 评论(0) 推荐(0)
摘要:题意:给你n个字符串,m次查询,每次问你第p个字符串的s到t的字符串在n个字符串建成的字典树上出现了多少次 题解:先建出字典树,在字典树上拓展sam,记录每个子串的出现次数.查询时只需找出在字典树上的t在sam中的位置,每次往fa跳(即后缀相同,长度减小)找到第一个长度比查询串的小于等于的位置就是答 阅读全文
posted @ 2019-04-06 13:50 walfy 阅读(184) 评论(0) 推荐(0)
摘要:题意:有棵树每个点有个颜色(不超过10种),每个节点不超过20个儿子,问你每两点之间的颜色序列不同的有多少种 题解:先建出树,对于每个叶子节点,bfs一遍建在sam上,每次保留当前点在sam上的位置,拓展时用父亲节点在sam上的位置当成last即可.然后统计sam本质不同的字符串有多少个 注:dfs 阅读全文
posted @ 2019-04-06 13:44 walfy 阅读(159) 评论(0) 推荐(0)
摘要:题意:给定一个非负整数序列{a},初始长度为N。 有M个操作,有以下两种操作类型: 1、Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N+1。 2、Qlrx:询问操作,你需要找到一个位置p,满足l define fi first define se second define db doub 阅读全文
posted @ 2018-09-30 12:13 walfy 阅读(178) 评论(0) 推荐(0)
摘要:题意:刚开始有一个空集合,现在有三种操作1,加x到集合中,2,删去集合中的一个x,3,查询集合中的x^p<l的个数 套路题,(看到异或和集合操作条件反射01字典树),加和删操作不说了,主要是查询,当l二进制中的第x位是1,那么取p第x位的异或时该位就是1,那么加上另一边(即p的第x位)的个数,当l第 阅读全文
posted @ 2018-03-05 22:16 walfy 阅读(119) 评论(0) 推荐(0)
摘要:很久之前刷的专题,今天准备学ac自动机打算复习一下,突然发现博客里没有= = 所以把模板拉过来 #include<map> #include<set> #include<cmath> #include<queue> #include<stack> #include<vector> #include< 阅读全文
posted @ 2017-09-18 15:44 walfy 阅读(114) 评论(0) 推荐(0)