- 博客(70)
- 收藏
- 关注
原创 快排的应用 —— 第 k 个小的数
这时 k 只会在这两边的其中一边,所以比较 k 与 (j-l+1)的大小关系。每排完一次序,数会被 i/j 以分界点分成左右两边。
2024-09-12 14:44:29 210
原创 动态规划 - 分组背包
第 i 组选第 k 个物品 f [ i - 1 ] [ j - v [ i ] [ k ] ] + w [ i ] [ k ]eg : 第 i 组一个物品都不选 f [ i - 1 ] [ j ],划分集合依据:第 i 组物品选第几个物品。
2024-08-28 00:23:34 325
原创 二分图的最大匹配 - 匈牙利算法
匹配:给定一个二分图G,在G的一个子图M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。最大匹配数:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数为最大匹配数。
2024-08-26 17:16:37 119
原创 最小生成树 - Kruskal算法
共一行,若存在最小生成树,则输出一个整数,表示最小生成树的树边权重之和,如果最小生成树不存在则输出impossible.接下来m行,每行包含三个整数u,v,w,表示点u和点v之间存在一条权值为w的边。if(a、b 不联通) 就将这条边加入集合中。1,将所有边按权重从大到小排序,调用系统的 sort 函数。kruskal算法---求稀疏图的最小生成树。图中涉及边的边权的绝对值均不超过10000。2,枚举每条边 a、b ,权重c。第一行包含两个整数n和m。
2024-08-26 01:01:41 234
原创 最小生成树 - 朴素Prim算法
共一行,若存在最小生成树,则输出一个整数,表示最小生成树的树边权重之和,如果最小生成树不存在则输出impossible.接下来m行,每行包含三个整数u,v,w,表示点u和点v之间存在一条权值为w的边。朴素Prim算法适用于稠密图 O(n^2)图中涉及边的边权的绝对值均不超过10000。最小生成树当中是不允许有自环的。第一行包含两个整数n和m。
2024-08-25 22:06:38 256
原创 最短路 - BellFord算法
请你求出从1号点到n号点的最多经过k条边的最短距离,如果无法从1号点走到n号点,输出impossible.接下来m行,每行包含三个整数x,y,z,表示点x和点y之间存在一有向边长为z。给定一个n个点m条边的有向图,图中可能存在重边和自环,边权可能为负数。输出一个整数,表示从1号点到n号点的最多经过k条边的最短距离。如果不存在满足条件的路径,则输出“impossible”。任意边长的绝对值不超过10000。注意:图中可能 存在负权回路。第一行包含三个整数n,m,k。有边数限制,存在负权边。
2024-08-24 23:10:48 263
原创 BFS - 图中点的层次
请你求出1号点到n号点的最短距离,如果从1号点无法走到n号点,输出-1。给定一个n个点m条边的有向图,图中可能存在重边和自环。所有边的长度都是1,点的编号为1~n。
2024-08-23 01:05:42 216
原创 DFS - 树的重心
请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的发大值。重心定义:重心是指树中的一个结点,如果将这个点删除后,剩余个连通专数的最大值最小,那么这个节点被称为树的重心。接下来n-1行,每行包含两个整数a和b,表示点a和点b之前存在一条边。给定一颗树,树中包含n个结点(编号1~n)和n-1条无向边。一个整数m,表示重心的所有的子树中最大的子树的结点数目。第一行包含整数n,表示树的结点数。
2024-08-23 00:40:59 279
原创 哈希表
给定一个长度为n的字符串,再给定m个询问,每个询问包含四个整数 l1 , r1 , l2 , r2,请你判断[ l1 , r1 ]和[ l2 , r2 ]这两个区间所包含的字符串子串是否完全相同。现在要进行N次操作,对于每个询问操作输出对应的结果。2.“Q x”,询问数x是否在集合中出现过;字符串中只包含大小写英文字母和数字。1.“I x”,插入一个数x;(2,开放寻址法(存储结构)(1,拉链法(存储结构)
2024-08-20 23:43:23 236
原创 堆
3.“DM”,荆除当前集合中的最小值(当最小值不唯一时,删除最早插入的最小体)现在要进行N次操作,对于所有第2个操作,输出当前集合的最小值。(输入一个长度为n的整数数列,从小到大输出前m小的数)5."C k x”,修改第k个插入的数,将其变为x;2."PM",输出当前集合中的最小值;4.“D k” 删除第k个插入的数;包含 down 操作。1.“ I x”,插入一个数x;
2024-08-20 01:03:45 226
原创 离散化(例题:区间和)
近下来,进行 m 次询问,每个询问包含两个整数!和r,你需要求出在区间[,r之间的所有数的和。现在,我们首先进行n次操作,每次操作将某一位置x上的数加c。假定有一个无限长的数轴,数轴上每个坐标上的数都是0。共m行,每行输出一个询问中所求的区间内数字和。再接下里 m 行,每行包含两个整数!接下来n行,每行包含两个整数x和c。第一行包含两个整数n和m。
2024-08-18 00:32:13 192
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人