随笔分类 - 知识点
摘要:初始化数组可不必使用n重for循环。 原理 memset具有初始化数组的功能,能够初始化数组中的每一个值。 它是将数组中的每一个数的二进制的每一个字节初始化的。 比如初始化int类型的a数组:memset(a,1,sizeof(a)); 得到的其实是0001 0001 0001 0001。 关于0x
阅读全文
摘要:题目 给定n个点的带权有向图,求从1到n的路径中边权之和最小的路径。 dijkstra实现方法 用dist[i]表示i这个点到原点的最短距离,一开始初始化为无穷大,然后将原点设为0。 用ok[i]表示i这个点是否已经确定了最短路,一开始将原点设为已经找到。 然后每一次枚举每一个点,找到与原点最近且没
阅读全文
摘要:题目链接 https://www.luogu.org/problemnew/show/P3388 模板题 解题思路 什么是割点? 怎样求割点? dfn :即时间戳,一张图的dfs序(dfs遍历时出现的顺序) 树边:连向孩子的边 反向边:连向祖先的边 low :即一个点能到达的时间戳最小的边(反向边只
阅读全文
摘要:题目链接 https://www.luogu.org/problemnew/show/P3865 ST表的作用 ST表可以解决RMQ问题,即区间最大值、最小值 优点 速度快:预处理的时间复杂度是o(nlogn)。查询的时间复杂度是o(1)。 缺点 不支持修改操作 实现方法 ST表借助于一个数组实现:
阅读全文
摘要:题目链接 https://www.luogu.org/problemnew/show/P1030 模板题 先讲一下二叉树的遍历 二叉树的遍历 分类 性质 求法 分为三类: 我们可知: **序遍历实际上是指根节点的位置 无论哪种遍历顺序,左子树都在右子树的前面 在前序遍历中,第一个点是根节点 在后序遍
阅读全文
摘要:核心代码 void insert(int u, int v) { e[eid].v = v; e[eid].next = p[u]; p[u] = eid++; } 例子 核心代码 void insert(int u, int v) { e[eid].v = v; e[eid].next = p[u
阅读全文
摘要:空间复杂度优化 空间复杂度优化 1、优化原理 1、优化原理 原式子(二维的): f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} 式子(1)现在要改成一维的(空间优化): f[v]=max{ f[v],f[v-c[i]]+w[i]} 式子(2) 注意上面的状态转移
阅读全文

浙公网安备 33010602011771号