算法
文章平均质量分 51
back2childhood
cpp/java/macos
展开
-
算法知识点----位运算、向上取整
交换两个数:使用异或操作符 ^ 进行交换。判断奇偶性:数值 x 为偶数当且仅当。数值 x 为奇数当且仅当。原创 2023-09-21 11:02:29 · 171 阅读 · 0 评论 -
使用数组模拟堆
接下来 N行,每行包含一个操作指令,操作指令为 I x,PM,DM,D k 或 C k x 中的一种。现在要进行 N次操作,对于所有第 2个操作,输出当前集合的最小值。对于每个输出指令 PM,输出一个结果,表示当前集合中的最小值。DM,删除当前集合中的最小值(数据保证此时的最小值唯一);输入一个长度为n的整数数列,从小到大输出前m小的数。共一行,包含 m个整数,表示整数数列中前 m小的数。C k x,修改第 k个插入的数,将其变为 x。第二行包含 n个整数,表示整数数列。D k,删除第 k个插入的数;原创 2023-05-10 21:38:37 · 395 阅读 · 0 评论 -
图的存储--邻接矩阵/边集数组/邻接表/链式邻接表/链式前向星
边集数组e[i]存储第i条边的「起点、终点、边权」。出边数组e[u][i]存储u的所有出边「终点v,边权w」。边集数组e[j]存储第j条边的「起点u、终点v、边权w」。使用二维数组w[u][v]存储点u到点v的边的权值。边集数组e[i]存储第i条出边的「终点v、边权w、表头数组h[u][i]存储u点的所有出边的。表头数组h[u]存储u点的。时间复杂度:O(n+m)空间复杂度:O(n+m)时间复杂度:O(n+m)空间复杂度:O(n+m)时间复杂度:O(n+m)空间复杂度:O(n+m)空间复杂度:O(m)原创 2023-05-02 16:24:02 · 946 阅读 · 0 评论 -
拓扑排序模板及例题
以此图为例,开始时节点1的入度为0,将其入队,而后节点2、3的入度均减一,此时节点2的入度为0,将其入队,然后节点3、4的入度减一,最后将节点3、4一次入队。若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y之前,则称 A是该图的一个拓扑序列。在第一个不同字母处,如果 s 中的字母在这门外星语言的字母顺序中位于 t 中字母之前,那么 s 的字典顺序小于 t。给定一个 n 个点 m条边的有向图,点的编号是 1到 n,图中可能存在重边和自环。输出:“wertf”原创 2023-04-27 13:43:13 · 1015 阅读 · 0 评论 -
并查集--几个例子
对于每个询问指令 Q a b,都要输出一个结果,如果 a 和 b 在同一集合内,则输出 Yes,否则输出 No。M a b,将编号为 a 和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假的。以下 K 行每行是三个正整数 D,X,Y,两数之间用一个空格隔开,其中 D 表示说法的种类。接下来 m 行,每行包含一个操作指令,指令为 M a b 或 Q a b 中的一种。原创 2023-04-26 12:18:50 · 135 阅读 · 0 评论 -
C++ 不常用的奇淫巧计
例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 + 3) = 0.75(即,75%)。给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标 i 的概率与 w[i] 成正比。也就是说,选取下标 i 的概率为 w[i] / sum(w)。原创 2023-04-06 20:03:33 · 2307 阅读 · 0 评论