摘要: 题意:给定一个串,和一个数c,求一个长度最大的公共子串(可以重叠),并且该公共子串出现次数大于c。题解见罗穗骞论文。收获: 计算高度函数时,遇到rk[i]==1的点时,要将k设置成0。(k是"h[i-1]-1")。 1 #include 2 #include 3 #include 4 #de... 阅读全文
posted @ 2015-03-17 20:49 idy002 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个串,求两个不相交的长度相等的子串,使得对应位置的差相等。题解:首先,假设串是a[0],a[1],...a[n],先作差,即a[1]=a[1]-a[0],a[2]=a[2]-a[1],a[i]=a[i]-a[i-1],然后我们求a[1],a[2],a[3],...a[n]的两个不相交的公... 阅读全文
posted @ 2015-03-17 19:34 idy002 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 第一道后缀数组后缀数组要维护三个数组:sa(suffix array), rk(rank)和ht(height)。含义分别是:sa[i]:将后缀按照字典序排序后,第i大的后缀的起始位置。rk[i]:起始位置为i的后缀的排名。ht[i]:起始位置为i的后缀与排名为rk[i]-1的后缀的最长公共前缀。对... 阅读全文
posted @ 2015-03-17 16:08 idy002 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 较水的网络流。 1 /************************************************************** 2 Problem: 1779 3 User: idy002 4 Language: C++ 5 Result... 阅读全文
posted @ 2015-03-17 13:48 idy002 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 收获:树上直径一定包含深度最深的点。然后O(nlogn)暴力。 1 /************************************************************** 2 Problem: 1776 3 User: idy002 4 Languag... 阅读全文
posted @ 2015-03-17 13:47 idy002 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 这是一道环上的问题,我们先将一个环展开,再复制一次。这样,任何一个合法方案一定对应在转换后的序列的一些连续的区间,使得它们的并的长度大于等于圈长。然后,我们将区间合并一下(就是将一些被其他区间包含的区间去掉)。假设某个答案的区间是r1,r2,r3,...rk,我们可以让ri为"与ri-1连接的右端点... 阅读全文
posted @ 2015-03-17 13:44 idy002 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 对于关系,看其是否是“等价关系”,即满足:自反,传递,对称。如果是可以用并查集来连接等价类。这道题是求原图补集的联通快个数,考虑原图度最少的点(由鸽巢原理,最多为2*e/n个)。先将未与其连边的点并在一个集合中,然后再用剩下的点暴力,每次O(n),最多暴力O(2*e/n)次,所以总的复杂度是O(e)... 阅读全文
posted @ 2015-03-17 13:34 idy002 阅读(171) 评论(0) 推荐(0) 编辑