摘要:
Boruvka算法求最小生成树 算法的核心思想是贪心,类似于 \(kruskal\) 算法过程: 维护途中所有联通块,然后遍历所有点和边。 找到每一个联通块和其他联通块相连的最小的一条边。 把连通块合并起来,重复操作,直到剩下一整个连通块。 复杂度分析: 复杂度是 \(O((m+n)log n)\) 阅读全文
摘要:
CodeForce 1550 A 考虑最少,我们可以将序列数字设为: \(1,3,5,7,9....\) 进行前缀和计算,找到 \(S\) 匹配到的区间值,其最少的数的个数即为对应大前缀和的下标。(这是一种时间复杂度更优的算法) #include<bits/stdc++.h> using names 阅读全文
摘要:
线性筛 线性筛可以在严格 \(O(n)\) 的时间内筛出积性函数的值 拥有常见的套路。 假设 \(n = p_1^{a_1} p_2^{a_2} \dots p_k^{a_k}\) 如果我们能快速得到 \(f(p_i),f(p_i^{k+1})\) 的取值,那么直接套板子即可。 定义: \(p_i\ 阅读全文