算法笔记
文章平均质量分 95
各类算法的学习笔记,希望大家多多指教!
GoodCoder666
OIer & 编程爱好者
展开
-
【算法笔记】最近公共祖先(LCA)问题求解——倍增算法
最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。这种算法应用很广泛,可以很容易解决树上最短路等问题。为了方便,我们记某点集Sv1v2vnSv1v2vn的最近公共祖先为LCAv1v2vnLCAv1v2vn或LCASLCAS。部分内容参考OI Wiki,文章中所有算法均使用C++实现。原创 2023-01-06 23:03:23 · 1776 阅读 · 1 评论 -
【算法笔记】【专题】RMQ 问题:ST表/树状数组/线段树
好久没更算法笔记专栏了,正好学了新算法来更新……本文将讲解用于求解 RMQ 问题的三种数据结构:- ST 表(Sparse Table)- 树状数组- 线段树原创 2023-01-05 22:48:22 · 1579 阅读 · 1 评论 -
【算法笔记】位运算详解
突然想到位运算是个好东西,就来水一波文章了……注意:我把能想到的有关位运算的所有内容都放进来了,所以篇幅较长,请谅解!若有写的不清楚或者不够详细的地方欢迎在评论区补充,谢谢支持!本文中参考代码均使用C++编写。废话不多说,下面步入正题。有一定基础的可以跳过该部分。 位运算分为如下几种:取反()是最简单的位运算操作,只有一个参数xxx。将参数上的每一位对应取反即可。例如:性质:按位与()有两个参数xxx和yyy。对于xxx和yyy中的每个对应位,参照下表输出到结果的对应位:例子:性质:按位与()有两原创 2022-10-18 08:30:00 · 4732 阅读 · 0 评论 -
【算法笔记】树状数组/Binary Indexed Tree/Fenwick Tree
树状数组,即树形存储的数组,又称或。抛开它树形的存储结构,这种神奇的数据结构的应用看起来与「 树」没什么关系:有一个序列A=(A1,A2,…,AN)A=(A1,A2,…,AN),在不超过O(logN)O(logN)→\to~→求[L,R][L,R][L,R]区间内所有数之和。→\to~→指定一个元素AxA_xAx,将其加上kkk。原创 2022-08-20 20:08:23 · 1854 阅读 · 4 评论 -
【算法笔记】三种背包问题——背包 DP
背包(Knapsack)问题是经典的动态规划问题,也很有实际价值。这是最原始的01背包问题(即每个物品只能选000或111次)。下面我们来看如何求解。令fi,jf_{i,j}fi,j表示只考虑前iii个物品的情况下,容量为jjj的背包所能装的最大总价值。则最终答案为fn,Wf_{n,W}fn,W,状态转移方程为:...原创 2022-08-18 19:04:52 · 6557 阅读 · 4 评论 -
【算法笔记】Kruskal/Prim算法——求解最小生成树问题
最小生成树问题:给定一张带权无向图G,求它的一棵生成树,使其中所有边权之和最小。本文将介绍针对这种问题的两种经典算法——Kruskal和Prim。原创 2022-08-15 11:43:06 · 4421 阅读 · 0 评论 -
【算法笔记】单源最短路问题——Dijkstra算法(无优化/优先队列/set优化)
Dijkstra算法可在O(mlogm)O(mlogm)或O(mlogn)O(mlogn)的时间内求解无负权单源最短路问题。本文中,我们将详细介绍算法的原理、实现,以及常用的两种优化。另外,Dijkstra算法也不要乱用,比如说多源的最短路,用Dijkstra求解的复杂度只有O(nmlogm)O(nmlogm),但太麻烦,如果数据范围允许,直接用Floyd就能在O(n3)O(n3)...原创 2022-08-13 12:37:23 · 3250 阅读 · 0 评论 -
【算法笔记】多源最短路问题——Floyd算法
【算法笔记】多源最短路问题——Floyd算法令$f(x,y)$为从顶点$x$到$y$的最短路径。初始时,有:...原创 2022-08-12 21:07:11 · 3236 阅读 · 0 评论 -
【算法笔记】树形DP算法总结&详解
树形DP,又称树状DP,即在树上进行的DP,是DP(动态规划)算法中较为复杂的一种。本文将以例题+算法的形式,详细讲解这种算法。原创 2022-08-12 10:15:12 · 8955 阅读 · 10 评论