摘要: 思路:以第一个串为基串,将另外N-1个串分别与基串拼接跑后缀数组,记录基串每一个位置与另外一个串的最长匹配长度,求出每一个位置在和别的所有串跑后缀数组时所得的最长匹配中的最小值,最后求出所有位置中的最大值就是所求。 也可以用类似Music Theme的二分枚举搞掉,但是代码太丑陋所以就不贴啦 Code highlighting produced by Actipro CodeHighlight... 阅读全文
posted @ 2008-11-30 22:37 Beetlebum 阅读(407) 评论(1) 推荐(0) 编辑
摘要: 真糟糕,被%耍了一晚多写两个就超时了……真不应该到现在才来把这题干掉 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include using namespace std; #define MAXN 1001 __int64 a,b; i... 阅读全文
posted @ 2008-11-30 00:08 Beetlebum 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 对于正整数n的一个算术函数 f(n),当中f(1)=1且当a,b互质,f(ab)=f(a)f(b),在数论上就称它为积性函数。若某算术函数f(n)符合f(1)=1,且就算a,b不互质,f(ab)=f(a)f(b),则称它为完全积性的。 例子 φ(n) -欧拉φ函数,计算与n互质的正整数之数目 μ(n) -默比乌斯函数,关于非平方数的质因子数目 gcd(n,k) -最大... 阅读全文
posted @ 2008-11-29 23:47 Beetlebum 阅读(1157) 评论(0) 推荐(0) 编辑
摘要: 多得这东东,把RE了一晚的题目给干掉了没看过的还是扫一遍吧,免得在discuss里被BS 常见问题解答 1. 我的程序如何进行输入输出? 2. 在线判题系统(以下简称POJ)的编译器是哪些? 3. 提交的时候可否使用快捷键? 4. 请问提交的程序是如果被判答的? 5. POJ对提交程序的不同判答的意义? 6. Special Judge的题目有什么不同? 7. 如何确定程序读入的终止? 8. 为什... 阅读全文
posted @ 2008-11-29 00:24 Beetlebum 阅读(1265) 评论(0) 推荐(0) 编辑
摘要: 后缀数组+栈的线性扫描统计两个字符串的长度不少于K的公共子串个数 separate()构造原字符串str1和str2的高度数组,根据lcp(sa[i],sa[j])=rmq(height[i+1..j]),注意到各后缀在合并后得到的字符串中保持在原字符串中的字典序 Code highlighting produced by Actipro CodeHighlighter (freewar... 阅读全文
posted @ 2008-11-25 22:28 Beetlebum 阅读(946) 评论(0) 推荐(0) 编辑
摘要: 题意:对原字符串插入若干字符后,动态查询某两个位置的lcp RMQ用Square Table作O(nlogn)的预处理和O(1)的询问 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include using namesp... 阅读全文
posted @ 2008-11-24 01:09 Beetlebum 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 河蟹到此一游 阅读全文
posted @ 2008-11-24 00:57 Beetlebum 阅读(444) 评论(0) 推荐(0) 编辑
摘要: 若在假设重复子串的长度最多为L的限制下有解, 则对于任意一个比L小的限制L'#include using namespace std; #define MAXN 20010 int a[MAXN],b[MAXN],array[4][MAXN],*sa,*nsa,*rank,*nrank,height[MAXN],n; void make_sa(){ int i,k;... 阅读全文
posted @ 2008-11-24 00:43 Beetlebum 阅读(505) 评论(8) 推荐(0) 编辑
摘要: 第一道后缀数组...多加点注释希望能帮助理解后缀数组 题意:求两个字符串的最长公共子串 思路:串接两个字符串并对其求height,对后缀排序后,有可能包含最长公共子串的两个后缀必然是排序结果中相邻项,并且要求两个后缀的起始位置不在同一字符串中,所以ans为height[i]的最大值且sa[i]与sa[i-1]有且仅有一个的值小于第一个字符串的长度len Code highlighting pr... 阅读全文
posted @ 2008-11-21 16:36 Beetlebum 阅读(1092) 评论(2) 推荐(1) 编辑
摘要: 后缀数组就是将字符串所有后缀排序后的数组,设字符串为S,令后缀Suffix(i)表示S[i..len(S)]。用两个数组记录所有后缀的排序结果: Rank[i]记录Suffix(i)排序后的序号,即Suffix[i]在所有后缀中是第Rank[i]小的后缀 SA[i]记录第i位后缀的首字母位置,即Suffix[SA[i]]在所有后缀中是第i小的后缀 然后就是怎么快速求所有... 阅读全文
posted @ 2008-11-19 20:48 Beetlebum 阅读(3981) 评论(1) 推荐(0) 编辑