KMP 算法简单解释 ? 讲KMP算法,离不开BF,实际上,KMP就是BF升级版,主要流程和BF一样,就是在削除回溯上花了点功夫,利用Next数组来削除 1)Next[0]= 1; //只有Next[0]为 1,当第一个不匹配时则在KMP中讲主串索引i向后挪一位(++i); //此时子串索引下标j= ...
分类:
编程语言 时间:
2019-10-05 22:36:35
阅读次数:
96
问题解决 一般用于解决一类最小表示或最小串的问题。 问题引入 例题: "poj1509" 求它的循环串中字典序最小的串的开头。 问题解决 暴力 找到所有的串存下来然后排序,复杂度$\Theta(n^2)$的。 诡异做法 建个后缀自动机然后遍历最小的字母边即可。 正经一点的 考虑两个指针$i$,$j$ ...
分类:
其他好文 时间:
2019-10-05 22:34:06
阅读次数:
110
T1: 每个数至多有$2 \sqrt{m}$个约数,也就是说即使$n$很大,在数集中有倍数的数在$m \sqrt{a}$级别。 可以暴力筛出数集中每个数得约数,用hash表维护一下,可实现$O(1)$查询。 用$n$减去筛出的数个数即为答案中0的个数,但是注意超过$n$的数要删掉。 时间复杂度$O( ...
分类:
其他好文 时间:
2019-10-05 16:45:49
阅读次数:
99
人生第一次A,B层一块考rank2,虽然说分差没几分,但还是值得纪念。 题解: T1 天空龙: 大神题,因为我从不写快读也没有写考场注释的习惯,所以不会做,全hzoi就kx会做,kx真大神级人物。 T2 巨神兵: 大神题,一看数据范围这么小,我们考虑状压,最傻逼的暴力思路是压边,但是这显然不行。正解 ...
分类:
其他好文 时间:
2019-10-05 16:40:26
阅读次数:
86
ODT,即珂朵莉树,又称老司机树(Old Driver Tree)。 它是一个十分暴力的数据结构,可以用于各种乱搞,也非常的实用。 当然,这全要基于一个基本条件:数据随机。 主要思想 ODTODT的主要思想就是把一个元素完全相同的区间合并成一个节点,然后用set维护(我也不知道为什么称其为“树”)。 ...
分类:
其他好文 时间:
2019-10-05 16:11:14
阅读次数:
88
https://loj.ac/problem/10047 题目描述 给出一个字符串S,求出其子串中满足ABA形式且|A|≥k,|B|≥1的数目。 思路 首先明确这道题n2暴力是可以过的,而题目中定义可以转化为A为子串的公共前后缀且长度大于k,小于整个子串长度的1/2,所以我们考虑用KMP来求公共前后 ...
分类:
其他好文 时间:
2019-10-05 12:51:07
阅读次数:
74
题目: 分析: 考虑最暴力的暴搜,怎么才能优化呢? 如果我们确切地知道第k大的路径权值和有多大,那么在dfs里面加一个限制就可以求出所有前k大的路径了。 很显然答案是满足单调性的。 可以二分一个答案,dfs一遍,看满足这个答案的有多少条路径,如果超过k条,就往大的走。 最后把二分出来的答案跑一遍df ...
分类:
其他好文 时间:
2019-10-05 12:50:50
阅读次数:
113
正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 1. 随机化算法,check到答案的概率为$1/49$ 2. 1. $n\leq k^2$ 暴力 2. $n\geq k^2$,找点x,求直线l经过x,且点数最 ...
分类:
其他好文 时间:
2019-10-05 12:14:49
阅读次数:
115
把每m个元素分为一块,共有n/m块,每次区间加的操作会涉及O(n/m)个整块,以及区间两侧两个不完整的块中至多2m个元素。 我们给每个块设置一个加法标记 atage(记录这个块中元素一起加了多少),每次操作对每个整块直接O(1)标记,而不完整的块由于元素比较少,暴力修改元素的值。每次询问时返回元素的 ...
分类:
其他好文 时间:
2019-10-05 11:04:04
阅读次数:
94
Floyd算法: 复杂度O(n^3) 首先这个算法使用暴力dp来写的,很容易就会TLE。但是这是一个多源最短路算法,可以求出来任意两点之间的最短距离 示例代码: 1 #include <cstdio> 2 #include <iostream> 3 #define INF 0x3f3f3f3f 4 ...
分类:
其他好文 时间:
2019-10-05 10:26:58
阅读次数:
74