03 2023 档案
摘要:二.Dijkstra 这个基本上是用来跑边权为非负的图 ,算法复杂度O(n^2+m) 这个算法的思路是这样的: 先确定起点标记为0 然后从起点去看起点所连出去的边,找出边权最小的,再由他去遍历之后点然后继续去更新边权 再取最小 ,可以知道前面已经被访问的点不可能被后面的点再次更新! 一个贪心的基本思
阅读全文
摘要:一.Bellman-Ford 主要适用场景: 1.这主要是一个用来判断是否存在负环的 2.当边权可为负数时Dijkstra算法不成立!这个可以很容易去判断!!! 所以此时只能去弄 Bellman-Ford !! Bellman-Ford 用 dist[i] 去记录所有节点的最短路径!! 理解:首先确
阅读全文
摘要:并查集相关知识的整理 : 并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。 顾名思义,并查集支持两种操作: 合并(Union):合并两个元素所属集合(合并对应的树) 查询(Find):查询某个元素所属集合(查询对应的树的根节点),这
阅读全文
摘要:这是关于堆知识的整理 堆是一个二叉树 维护的是一个有序的二叉树 堆中某个结点的值总是不大于或不小于其父结点的值;(大根堆与小根堆) 堆总是一棵完全二叉树。 priority_queue b;//大根堆 priority_queue<int, vector, greater> s;//小根堆 这边的g
阅读全文
摘要:就是有不同组 ,看一道例题 !! 可以这样去想 就是去划分 每一个地方 然后去看对于不同组能不能得分 如果能那就对于该地方的值+1 依次去枚举每一个地方 这样求出最大的! #include <bits/stdc++.h> using namespace std; int a[101][101],f[
阅读全文
摘要:简单二叉树 树的知识 树的遍历问题 : 1.首先是 树的先序 中序 后序遍历 主要就是中序决定了这颗树长什么样,中序找根分为左右子树,然后再不断去查找 !!!这个点挺重要的。如果是知道前序和后序而不知道根的话那就会出问题!! 因为当子节点只有一个时有两种情况!! #include <bits/std
阅读全文
摘要:1.这个就是在0 1 背包的条件下 加上每个物品能被多次取到! 优化方式 数学知识来优化 :并不是二进制! 首先我们要搞明白多重背包问题,总点就是状态的更新,是以一个什么方式递推过去的,举个例子如果是L[i]个物品,如果是从1-L[i]枚举过去我们不难知道其实,我们这样计算的其实是有一共ΣL[i]1
阅读全文

浙公网安备 33010602011771号