
【数据结构】后缀数组
mysterynoip
蒟蒻OIer
展开
-
bzoj 1396 识别子串 & bzoj2865 字符串识别 后缀数组+线段树
题面 题目传送门 双倍经验传送门 解法 解法全靠yy…… 显然我们可以先构造出后缀数组。我们令len[i]=max(height[rnk[i]],height[rnk[i]+1])len[i]=max(height[rnk[i]],height[rnk[i]+1])len[i]=max(height[rnk[i]],height[rnk[i]+1]),表示从iii开始长度超过len[i]len[...原创 2018-11-21 21:25:37 · 353 阅读 · 0 评论 -
bzoj 3238 [Ahoi2013]差异 后缀数组+单调栈
题面 题目传送门 解法 重新开始学习后缀数组的第一道题…… 显然,我们只要考虑怎么求∑i∑jlcp(i,j)\sum_i\sum_j lcp(i,j)∑i∑jlcp(i,j)。原创 2018-11-17 15:58:50 · 165 阅读 · 0 评论 -
bzoj 3473 字符串&bzoj 3277 串 后缀数组
题面 题目传送门 双倍经验传送门 解法 我还是太菜了……3277总时限10s,然而T了…… 首先显然是把这些串拼起来中间用分隔符隔开,然后构造出后缀数组。 然后我们枚举子串的开头部分。可以发现,最大能贡献到答案中的长度是满足单调性的,所以我们可以考虑二分这个长度,假设为lenlenlen。 那么我们就可以求出这个后缀所在的最长的区间使得这个区间中后缀两两的lcplcplcp不小于lenlenle...原创 2018-11-17 21:35:55 · 195 阅读 · 0 评论 -
bzoj 2754 [SCOI2012]喵星球上的点名 后缀数组+莫队
题面 题目传送门 解法 之前曾尝试用AC自动机暴力水过去,然而T了…… AC自动机显然是可以实现的,但是因为字符集太大,所以会导致超时。 那么我们考虑后缀数组解决。首先我们可以将所有串整个拼成一个新的字符串。名和姓之间用一种分隔符隔开,不同的字符串之间用另一种分隔符隔开。 然后构造出后缀数组。考虑如何求解第一问,显然可以在后缀数组中找到以当前字符串开头的后缀的位置,然后上下二分一下对应的区间[l...原创 2018-11-18 13:51:13 · 461 阅读 · 1 评论