分类: 学习笔记

18 篇文章

二分答案
模板转载自 Echo 的 基础算法模板 – Echo小窝 (liveout.cn) 左右边界的移动 遇到一道二分答案的题,我们应该分析一件事:区间的划分。 例题:Array Stabilization (GCD version) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 分析:这道题经过分析后发现是一个二分套 ST 表。 我…
ST 表
ST 表 ST 表运用了倍增的思想。 其中 $dp_{i, j} = \max(i \to i + 2^j - 1)$,也就是 $dp_{i, j}$ 的值是区间 $[i, i + 2^j - 1]$ 中的最大值。 通过上面的定义,显然 $dp_{i,0} = \max(i \to i + 2^0 - 1) = \max(i \to i) = a_…
LCA 学习笔记
LCA 是最近公共祖先的简称。 朴素算法 如果两个点的深度相同:就往上跳,直到两个节点相同。 否则先让两个点的深度相同。 倍增 和朴素算法类似,只是把挨个往上跳变成每次跳 $2^i$。 代码: #include <bits/stdc++.h> using namespace std; /* */ int n, m, s; vector …
最小生成树 Kruskal & Prim 算法 & P3366 题解
算法标签:==贪心== ==图论== Kruskal 算法思路 这个算法主要是运用了贪心思想。 首先对每个边进行排序,每次选取最小的边,用并查集判断是否选过或形成环。 当边选够了,输出。 注意事项 结束循环的条件有两种: ++ cnt >= n - 1:这时候注意 sum += edge[i].value 在判断的前面,因为判断的意义是:到现…