摘要: 传送门 KMP 对于这种一个字符串的问题 肯定先考虑KMP 如果一个串A要成为周期 设A长度为len_A,原串长度为len 那么串A要成为周期的充分必要条件就是: 从0 ~ (len-len_A)的串就要等于(len_A) ~ len的串 如下图: 要怎么找出我们上图红色的串呢? 考虑 KMP 的 阅读全文
posted @ 2018-09-15 16:42 LLTYYC 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 传送门 字典树 把所有信息建一个字典树 然后把每条密码在字典树上跑一遍 把经过的结束标记以及跑到的最后的一个节点的整个子树的结束标记加起来 开一个数组存一下每个节点的子树的结束标记和就好了 阅读全文
posted @ 2018-09-15 14:06 LLTYYC 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 传送门 字典树 几乎就是模板 但是要注意如果每组数据都用一波memset... 会TLE 所以要考虑动态删点 如果要用到再把这个点的数据清空 没有什么好说的了... 阅读全文
posted @ 2018-09-15 13:56 LLTYYC 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 传送门 直接搞好像搞不了 考虑转换模型 显然每一行棋子不会跑到其他行.. 所以可以把每一行的情况看成一个子博弈 显然整个答案就是每一行的SG值的异或和 不懂的回去学SG函数... 考虑怎么分析一行的状况 可以发现空位的个数是不会变的 如果把每一段连续的棋子看成一块 整块的的值为块中棋子的个数 那么每 阅读全文
posted @ 2018-09-14 19:36 LLTYYC 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 传送门 DP+字典树 设 如果存在一种分法,使得第 i 个字符能被理解,并且 i 为此分法中的最后一个字符 (显然也是最后一个单词的最后一个字符) 那么 f [ i ] = 1 那么就是要求最大的 i 使得 f [ i ] = 1 考虑如何转移 如果知道了 f [ i ] = 1 那么 f[ i+l 阅读全文
posted @ 2018-09-13 17:25 LLTYYC 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 传送门 哈希 首先要知道一个结论: 判断一个串s中 长度为k的串是不是循环节 的充分必要条件是: s[1]~s[len-k] = s[k] ~ s[len] 并且 len%k=0 怎么证明呢 如图: 显然红色的串=s1(因为s[1]~s[len-k] = s[k] ~ s[len]) 同样s1=s2 阅读全文
posted @ 2018-09-13 16:24 LLTYYC 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 传送门 线性筛法 让每个合数只被它最小的素因数筛到 从而保证每个数均摊复杂度为O(1) 总复杂度O(n) 具体看模板 阅读全文
posted @ 2018-09-13 13:54 LLTYYC 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 传送门 哈希 or Manacher 首先有一个很显然的结论 对于一个回文串s 每次从s的中心开始向左右扩展一步 每次扩展的串一定都是回文串 如 s=abccba 从s的中心左右扩展一步得到 cc 扩展两步得到 bccb 扩展三步就得到了 abccba = s 所以如果我们枚举中心 向左右扩展,找到 阅读全文
posted @ 2018-09-13 13:35 LLTYYC 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 传送门 哈希表 枚举子串长度 k 把每个子串的哈希值加到哈希表里 用哈希表判重 因为子串可以反转 所以要两个哈希 一个从前往后,一个从后往前 复杂度为O(n + n/2 + n/3+ ... + n/n) 约等于 O(n ln n) 但是每次长度k更新都要清空哈希表 非常耗时(只有60分) #inc 阅读全文
posted @ 2018-09-12 13:08 LLTYYC 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目描述: 给定一个字符串 求出该字符串最多由几个相同的子串连接构成 字符串长度 n<=1000000 hash or KMP hash的话就枚举长度,暴力判断 复杂度约为O(n log n) 主要是KMP怎么搞 先想想如果该字符串是由一些相同的子串构成,如abcabcabcabc 那么fa 阅读全文
posted @ 2018-09-12 10:06 LLTYYC 阅读(137) 评论(0) 推荐(0) 编辑