【算法】字符串哈希
文章平均质量分 77
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ4755】【JSOI2016】扭动的回文串
【题目链接】点击打开链接【思路要点】一定存在一个最长的扭动回文串是从回文中心所在串的某一个极长回文子串开始,一侧向回文中心所在串匹配,另一侧扭向另一个串匹配。因为任意一个扭动的回文串都对应了一个同样长的满足上述要求的扭动的回文串。枚举回文中心,问题转化为了两个字符串的LCP,字符串哈希和后缀结构均可解决。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h...原创 2018-04-10 21:02:55 · 302 阅读 · 0 评论 -
【BZOJ4943】【UOJ315】【NOI2017】蚯蚓
【题目链接】BZOJUOJ【思路要点】先说做法:用链表模拟蚯蚓的队列。对于每一个1号操作,计算所有新增的,长度在50以内的子串的哈希值,并加入哈希表中。对于每一个2号操作,计算所有被切断的,长度在50以内的子串的哈希值,并在哈希表中除去。对于每一个3号操作,计算每个子串的哈希值,并在哈希表中找到它们的出现次数,并相乘得到答案。显然,2号操作的总复杂度为\(O(CK^2)\),3号操作的总复杂度为\...原创 2018-05-30 20:32:43 · 386 阅读 · 0 评论 -
【BZOJ3946】无聊的游戏
【题目链接】 点击打开链接 【思路要点】 记 aiaia_i 表示 sisis_i 和 si−1si−1s_{i-1} 的 lcplcplcp 的长度,对一段区间 [l,r][l,r][l,r] 增加一个前缀,那么 al+1,al+2,...,aral+1,al+2,...,ara_{l+1},a_{l+2},...,a_r 都会对应增加这个前缀的长度, al...原创 2018-09-06 12:52:12 · 1012 阅读 · 3 评论 -
【CodeForces】CodeForces Round #406 (Div. 1) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Berzerk 【思路要点】 博弈搜索,将状态按先后手拆点,建出游戏图。 若一个点存在出边指向必败态,则该点为必胜态。 若一个点所有出边指向必胜态,则该点为必败态。 不满足上述两点的点为平局态。 用一个类似拓扑排序的过程实现即可。 时间复杂度 O(N2)O(N^2)O(N2) 。 【代码】 #inclu...原创 2018-09-27 18:13:18 · 332 阅读 · 0 评论 -
【省内训练2019-06-02】可爱
【思路要点】 首先在后缀 TrieTrieTrie 上考虑本题,考虑枚举不同的位置在后缀 TrieTrieTrie 上对应的节点,则后接的字符串应当对应相同。 那么,维护各节点 iii 子树中长度为 MMM 的字符串的后 M−depthiM-depth_iM−depthi 位的哈希值,则后接字符串对应相同即为哈希值对应相同,启发式合并即可更新答案。 需要对哈希表进行整体加的操作,因此需要为每...原创 2019-06-04 16:40:55 · 319 阅读 · 0 评论 -
【LOJ2572】「ZJOI2017」字符串
【题目链接】 点击打开链接 【思路要点】 分块维护前缀哈希值,则我们可以做到 O(N)O(\sqrt{N})O(N) 修改, O(LogN)O(LogN)O(LogN) 查询两个后缀的 LcpLcpLcp 。 用线段树维护子串,记录在原串中对应的范围,以及可能成为最小后缀的起始点集。 一个显然的事实是,考虑不断向字符串后方添加字符的过程,令当前字符串已有 kkk 位,考虑 i&...原创 2019-06-21 20:03:01 · 737 阅读 · 1 评论