[Codechef CHSTR] Chef and String Description 每次询问 $S$ 的子串中,选出 $k$ 个相同子串的方案有多少种。 Solution 本题要求不是很高,$O(n^2)$ 统计每个出现次数子串个数即可。 我因为一个lld WA了一晚上(猛然意识到要%d读入l ...
分类:
编程语言 时间:
2019-11-01 22:30:38
阅读次数:
126
[SDOI2016] 生成魔咒 Description 初态串为空,每次在末尾追加一个字符,动态维护本质不同的子串数。 Solution 考虑时间倒流,并将串反转,则变为每次从开头删掉一个字符,即每次从后缀集合中删掉一个后缀。 预处理出后缀数组和高度数组后,用平衡树维护所有后缀集合(按照后缀排序), ...
分类:
编程语言 时间:
2019-10-25 13:20:52
阅读次数:
83
感觉SA还是有点用处的所以还是用用的好。 定义 首先是一些定义,这是后缀数组的基础。 $sa_i$表示按照字典序从小到大排序后第$i$个串是$sa_i$这个后缀。 $rank_i$表示$i$这个后缀对应的是第几个(排名)。 $height_i$表示的是$lcp(sa_i,sa_{i 1})$的长度。 ...
分类:
编程语言 时间:
2019-10-05 22:02:54
阅读次数:
91
题意: 对于一个给定的长度为n的字符串,求出它的第k小子串。 有参数t,t为0则表示不同位置的相同子串算作一个,t为1则表示不同位置的相同子串算作多个。 题解: 首先,因为t的原因,后缀数组较难实现,这里不讨论。 使用后缀自动机: 因为,这里需要按字典序考虑子串,所以要使用trs指针。 首先,计算出 ...
分类:
其他好文 时间:
2019-10-01 22:28:05
阅读次数:
115
大意: 给定串$s,t$, 给定整数$x$, 求判断$t$是否能划分为至多$x$段, 使这些段在$s$中按顺序,不交叉的出现. 设$dp_{i,j}$表示$s$匹配到$i$位, 划分了$j$段, 匹配到$t$中的最大位置 每次取一个极长的lcp转移即可, lcp可以二分哈希或者用后缀数组+RMQ求 ...
分类:
编程语言 时间:
2019-10-01 11:49:06
阅读次数:
69
给出一个字符串,将其所有循环同构按字典序排列。排列后按顺序输出的每个循环同构的最后一个字符。 ...
分类:
Web程序 时间:
2019-09-22 19:44:47
阅读次数:
119
题意: 给你S串和T串,用T串的所有前缀去匹配S串(匹配值是最长公共子串)。 问你总值相加是多少。 思路: 先把两个S,T串倒过来,再拼接 S#T 合成一串,跑一下后缀数组 在排序好的rank里计算每个T后缀的最长匹配长度。(前后两个for即可) 最后dp对后缀取max,累计答案。(因为后缀从pos ...
分类:
编程语言 时间:
2019-09-21 15:24:46
阅读次数:
161
思路肯定是没有问题,但是不知道为啥一直 TLE 两个点~ ...
分类:
编程语言 时间:
2019-09-16 09:55:01
阅读次数:
88
基础(据说):基数排序:https://blog.csdn.net/zhen921/article/details/80354096 模板题:https://www.luogu.org/problem/P3809 学习粗:https://www.cnblogs.com/chenxiaoran666/ ...
分类:
编程语言 时间:
2019-09-14 01:06:28
阅读次数:
102
题意:给你一个长度为n的字符串和m组询问,每组询问给出l,r,k,求s[l,r]的第k次出现的左端点。 解法一: 求出后缀数组,按照排名建主席树,对于每组询问二分或倍增找出主席树上所对应的的左右端点,求第k大的下标即可。 解法二: 建立后缀自动机,对后缀树(fail树)作线段树合并可得到每个结点包含 ...
分类:
编程语言 时间:
2019-09-12 23:37:36
阅读次数:
144