上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 26 下一页
摘要: 最长公共子串问题的后缀数组解法。将第二个字符串拼接到第一个字符串中去,中间用分割符隔开,避免后面计算的时候发生一个字串横跨两个字符串的情况。之后看相邻的不在同一个字符串中的lcp的最大值即可。#include #include #include #include #include #include ... 阅读全文
posted @ 2014-09-26 22:36 acm_roll 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 这题曾经用KMP做过,用KMP 做非常的简单,h函数自带的找循环节功能。用后缀数组的话,首先枚举循环节长度k,然后比较LCP(suffix(k + 1), suffix(0)) 是否等于len - k, 如果相等显然k就是一个循环节。得到LCP的话可以通过预处理出所有点和0的lcp就好了。另外倍增法... 阅读全文
posted @ 2014-09-26 22:05 acm_roll 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 本题是利用后缀数组求最长的回文串。方法是将字符串反转之后拼接到原来的字符串末尾,中间用一个没有出现过的分割符隔开,原因是防止最长公共前缀横跨两个串。之后分别枚举回文串的中点,以及回文串长度是奇数还是偶数,看一下对应位置的最长公共前缀即可。这里的求最长公共前缀要处理RMQ问题,线段树固然可以解决,但是... 阅读全文
posted @ 2014-09-26 17:23 acm_roll 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 后缀数组求不同子序列数量的简单题。对于一个已经处理好的后缀数组,对于每一个suffix(i),必然会产生len - sa[i]个前缀(假设从0开始), 然后这len - sa[i]个前缀里面有height[i]个是和前面那个前缀相同的,所以是len - sa[i] - height[i]个,求一下和... 阅读全文
posted @ 2014-09-26 16:07 acm_roll 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 用后缀数组求重复出现至少k次的可重叠最长子串的长度,当然是可以用hash搞的,用后缀数组的话,只要在分组之后看看个数是不是大于等于k#include #include #include #include #include #include #include #include #include usi... 阅读全文
posted @ 2014-09-25 23:26 acm_roll 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 最简单的后缀数组求最长不可重叠的重复字串长度的问题。。具体见论文《后缀数组——处理字符串的有力工具#include #include #include #include #include #include #include using namespace std; #define MP make_... 阅读全文
posted @ 2014-09-25 22:34 acm_roll 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 如果题意明确了的话就是一个简单bfs。。。。。。用优先队列搞一下还是很快的。#include #include #include #include #include #include #include #include #include #include #include #include #inc... 阅读全文
posted @ 2014-09-23 20:00 acm_roll 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 首先对于一棵树,如果要求点u->v路径上的边权值的1的个数为奇数的话,相当与异或和为一,而u->v的值始终与1->u xor 1->v 相等有了这个性质之后,直接选一个点为根,dfs遍历整颗树,就可以求出根节点到其他所有节点路径上的异或和了。然后题目所要求的方案数相当与从所有为0的路径中和所有为1的... 阅读全文
posted @ 2014-09-23 18:26 acm_roll 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 维护一个斜率的绝对值递增的单调栈,然后正反各搞一遍即可。#include #include #include #include #include #include #include #include #include #include #include #include #include #incl... 阅读全文
posted @ 2014-09-23 14:42 acm_roll 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 终于学会倍增法了, 先一个最水最水的后缀数组应用。#include #include #include using namespace std;const int maxn = 1e6;char buf[maxn];int str[maxn], len, sa[maxn];inline int id... 阅读全文
posted @ 2014-09-19 16:39 acm_roll 阅读(366) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 26 下一页