数学知识
文章平均质量分 73
以算法题目为例,引入离散数学知识应用
爱学习的图灵机
计算机新生努力学习
展开
-
【算法竞赛进阶指南】141.周期 题解 KMP 最小循环节
可以从几乎任意位置开始,只要字符串的长度足够长以支持所描述的周期 (如果不支持,那么表示从j开始的后续部分无法使用T’进行重复构成,这样的情况则不需要讨论。上面的1就是下面的1(完全相同的部分),而下面的1等于上面的2(前后缀匹配),上面的2等于下面的2,而下面的2等于上面的3…反证: 假设原串存在一个子串T’,它不是最短循环节,也不是最短循环节的循环构成(倍数),但是可以循环构成原串。所以假设是错误的,也就是说,T确实是最短循环节。所以上面的1,2,3,4,5和下面的1,2,3,4,5完全相同。原创 2023-05-30 16:36:32 · 1176 阅读 · 0 评论 -
次小生成树问题——秘密的牛奶运输
题目描述算法本题是一个裸的严格次小生成树问题。所谓严格就是该次小生成树的总边权严格大于最小生成树(以下用MGT称呼)。非严格的就是边权和MGT相同算法1:自然的想先求MGT,再每次删去MGT中的一条边,在该图上做MGT求解(新图的MGT就是原图的次小生成树)。做一遍kruskal后面就不用再排序了,删边次数n - 1,每次求MGT是m,故 O(mlogm+nm)O(mlogm + nm)O(mlogm+nm)。这种方法求不出 严格次小生成树,因为如果有非严格次小生成树,删边之后再找肯定会找到非原创 2022-02-19 22:33:39 · 617 阅读 · 0 评论 -
数论算法_线性筛_原理解释及其C++实现
线性筛在O(n)O(n)O(n)]时间内得到素数表的一种算法实现原理:用int primes[]记录素数,st[i]记录i是否为素数每一个数字只会被最小质因子筛掉,对于n而言最小质因子一定出现在⩽n\leqslant \sqrt{\mathrm{n}}⩽n的范围内可以用均摊分析的方法来分析算法的复杂度,由于每个合数都唯一的被它的最小素因子筛一次,而每个合数的最小素因子都是唯一的,总复杂度是O(n)O(n)O(n)注意,每次筛的都是primes[j]*i代码:#include <b原创 2021-06-14 16:31:07 · 274 阅读 · 0 评论