算法基础
文章平均质量分 62
hh_joker
代码的烦恼为何如此多!!!
展开
-
分治思想(快速排序、归并排序及扩展)模板
由于各个子问题与原问题形式相同,只是规模较小而已,而当子问题划分得足够小时,就可以用简单的方法解决。1.分解:将要解决的问题分解为若干个规模较小、相互独立、与原问题形式相同的子问题。1.将整个区间一分为二( [l,r] -> [l,mid] [mid+1,r] )2.左边所有数left = tmp。3.合并:按原问题的要求,将子问题的解逐层合并构成原问题的解。2.递归排序 [l,mid] 和 [mid+1,r]思想:将一个较大的问题分解成若干个较小的问题,分而治之。原创 2023-10-15 18:35:31 · 82 阅读 · 1 评论 -
前缀和与差分(模板)
核心操作:给以 (x1,y1) 为左上角,(x2,y2)为右下角的子矩阵中的所有数 a[i,j],加上C;2,构造差分矩阵 b[][], 使得 a[][] 是 b[][] 的二维前缀和;公式:sum(L,R) = a(R) - a(L-1)2,(x1,y1), (x2,y2) 这一子矩阵中所有树的和该如何计算。等价于:b[x1,y1] += C,;公式:a[i] += a[i-1]核心操作:将 a[L ~ R] 全部加上C,;等价于:b[L] += C,初始化:a0 = 0;1,给定二维数组 a[][]?原创 2023-10-25 18:00:09 · 52 阅读 · 0 评论 -
整数、小数二分(模板)
【代码】整数、小数二分(模板)原创 2023-10-31 00:08:13 · 79 阅读 · 2 评论 -
算法 —— 数据结构
【代码】算法 —— 数据结构。原创 2023-11-08 23:55:53 · 128 阅读 · 1 评论 -
C++ STL基本用法
不支持 lower_bound()/upper_bound(), 迭代器的++, --begin()/end() ++, -- 返回前驱和后驱,时间复杂度 O(logn)lower_bound(x) 返回大于等于x的最小的数的迭代器。upper_bound(x) 返回大于x的最小的数的迭代器。erase() 输入的参数是pair或者迭代器。和上面类似,增删查改的时间复杂度是O(1)insert() 插入的数是一个pair。count() 返回某一个数的个数。set(k, v) 把第k位变成v。原创 2023-12-01 23:38:06 · 1618 阅读 · 1 评论 -
搜索与图论
一个序列,包含图中所有的点;在这个序列中,排在后面的点,不会有指向排在前面节点的出边。且这个序列不是唯一的。dfs(深度优先搜索):一条路走到黑。沿着一条路一直搜索,直到走不通时,再进行回溯。bfs(广度优先搜索):像波纹一样层层向外扩展。每层搜索完全后,在进行下一层的搜索。原创 2023-12-05 23:14:13 · 630 阅读 · 1 评论 -
数学(常用算法模板)
所以,一个式子:ax + by = c 有解,则 c 为 a b 的最大公因数的倍数。有一个式子:ax + by = d;其中,d 为 a b 的最大公因数。对于这样一个式子,可以求得一组( x0 y0 )使得式子成立;原创 2023-12-09 11:21:47 · 1411 阅读 · 0 评论 -
简单博弈论
所谓采取最优策略是指,若在某一局面下存在某种行动,使得行动后 对面面临必败局面,则优先采取该行动。同时,这样的局面被称为必败。在有向图游戏中,对于每个节点 x,设从 x 出发共有 k 条有向边,分别到达节点 y1,y2,……定义有向图游戏 G,它的行动规则是任选某个有向图游戏 Gi,并在 Gi 上行动一步。NIM 博弈属于公平组合游戏,但城建的棋类游戏,比如围棋,就不是公平组合游戏。特别地,整个有向图游戏 G 的 SG 函数值被定义为有向图游戏起点 s 的 SG 函数值,即 SG(G) = SG(s)。原创 2023-12-11 22:43:29 · 329 阅读 · 0 评论