摘要: 该题题意是给定一个音乐串,要求最长的主题串满足可以找到两个这样的串,在对方的每一位添加一个数字 两个串互相不能够有重叠有是多项式插值取模的hash的应用代码如下:#include <cstdlib>#include <cstring>#include <cstdio>#define T 99991#define MAXN 20000#define MOD 3001using namespace std;typedef unsigned long long UInt64;struct Node{ UInt64 key; int begin, end, next 阅读全文
posted @ 2012-07-18 23:47 沐阳 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 这题的题意是给定N个串,某个串的子串在超过一半的串存在的话,那么这个串就是可取的,问满足这样的子串的最长长度是多少,如果有多个的话,按字典序输出。这题我是用hash过的。大体步骤是这样的,首先保留最长串的长度,然后二分0-MAXNLEN得到答案,那么这里重点就是如何去写这个判定函数。二分里面只会传递一个参数那就是长度K,根据这个长度我们把所有的串都拆成长度为K的子串,这里有个优化就是使用一种hash规则能够在得到1 - N的hash的时候计算出2 - N+1的hash值,那么这里用到了经典的多项式插值取模的方法:假设有一个字符串a[0],a[1],a[2],a[4],取长度为3的子串的时候,第 阅读全文
posted @ 2012-07-18 21:22 沐阳 阅读(267) 评论(0) 推荐(0) 编辑