摘要: 今天依然是一道图 最多删除多少边 等价于 最少多少边就可建图 这样考虑的话就可以引入贪心,不然删除的角度不太符合并查集的操作方法。 阅读全文
posted @ 2021-01-27 11:21 AGkd 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 今天是第二次遇到差分数组了 主要作用:一个区间内(比如下标i到j)批量修改同一个相对值(比如都加1都减5)的时候,可将$O(n)$变成$O(1)$ 好像没什么了。今天这题如果我熟悉差分数组,只能说有可能做出来吧。关键还在找到区间修改的那个规律。 阅读全文
posted @ 2020-11-29 16:10 AGkd 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 正好实验课遇到,就重温一下这两个算法吧。 测试用例都是简单的一个7个点的例题。 1.Dijkstra import java.util.Arrays; import java.util.HashSet; import java.util.PriorityQueue; import java.util 阅读全文
posted @ 2020-11-07 11:40 AGkd 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 1. 邻接矩阵 //设有矩阵e[n][n],其中n是图中点的数量, //则e[i][j]表示从点i到点j的距离(边的权重) 2.邻接表 因为图可能不是完全的,所以有很多的点之间互相并没有边相连,这种情况下若使用邻接矩阵,无疑会造成空间的浪费。 所以不妨采用列表的方式存储。 可以有两个思路 列表套列表 阅读全文
posted @ 2020-11-07 11:24 AGkd 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 在照着网上把该装的东西装好之后,设置IP的时候没填网关,于是发现连接没反应,填完网关之后就能用了 出现了设备信息 第一步总算成功了 阅读全文
posted @ 2020-11-05 16:28 AGkd 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 这题朴素的O(nk n) 的记忆化搜索方法是很容易的, 但是关键就是将其中一层n的循环有效的优化成logn。 原始的情况是对 \[ t \in [1,n] \] 的每一个$t$,计算 \[ min(max(f1(t), f2(t))) \] 想到这直接的想法肯定就是来个循环,遍历每一个关于$t$的$ 阅读全文
posted @ 2020-10-29 12:34 AGkd 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 单链表找环(floyd算法) 首先是示意图,链表中有环就是这种情况 问题是,在这样一个单链表中,若有环,寻找出环的入口 floyd算法是怎么做的呢? 快慢指针,同时从起点开始走。 设环路长度为l, 则当 \[ 2t - t = kl(k是整数) \] 时,快人和慢人相遇。 这时我们并不知道相遇点在哪 阅读全文
posted @ 2020-10-09 15:28 AGkd 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 迭代先序遍历二叉树 朴素的想法就是,照着递归把栈实现出来 都知道递归就是栈,也知道递归形式很简单 dfs() { cur; dfs(left); dfs(right); } 关键是怎么把递归用到的栈显式写出来 能想到一个简单的对应关系, 就是递归的当前轮次,也就对应着迭代的栈顶。 那怎么进入下一层, 阅读全文
posted @ 2020-09-30 15:47 AGkd 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 今天是leetcode685 冗余连接 这题容易想到的是有几种情况能找到多余的边 有两条边同时指向某个点(冲突) 根节点被某条边指向(成环) 用如下代码记录冲突和环路 if(p[to] != to) {//若该边指向的点已有父点,则产生冲突 con = i;//记录冲突边 } else {//若该边 阅读全文
posted @ 2020-09-17 21:17 AGkd 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 记录一下kruskal算法 将所有边按权重排序 从排好序的边集中依次取出,若当前选到的边不会让现有的若干个树成环,则选中该边 选到n-1条边后结束 阅读全文
posted @ 2020-09-15 19:20 AGkd 阅读(118) 评论(0) 推荐(0) 编辑