- 博客(404)
- 资源 (4)
- 收藏
- 关注
原创 每周题解:Intervals(区间)
给定 n 个区间 [ai,bi] 和 n 个整数 ci。你需要构造一个整数集合 Z,使得 ∀i∈[1,n],Z 中满足 ai≤x≤bi 的整数 x 不少于 ci 个。求这样的整数集合 Z 最少包含多少个数。
2024-06-13 10:22:26
1367
原创 每周算法:差分约束求最值
差分约束系统是一种特殊的N元一次不等式组,它包含N个变量Xi ~ Xn,以及M个约束条件,每个约束条件都是由两个变量作差构成的,形如Xi-Xj≤Ck,其中Ck是常数(可以是非负数,也可是是负数)。要解决的问题是:求一组解X1=ai,X2=a2,...Xn=an,使所有约束条件都得到满足。
2024-06-12 16:29:30
821
原创 每周算法:01分数规划
01分数规划 :01指取还是不取,分数即所求型式为a/b,规划就是选取最好的方案。01分数规划一般采用二分答案的方式求解。
2024-06-05 16:02:23
865
原创 每周题解:走廊泼水节
给定一棵 N 个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。求增加的边的权值总和最小是多少。
2024-06-01 22:01:29
925
原创 每周算法:次小生成树
严格次小生成树是指该次小生成树的总边权严格大于最小生成树的边权之和。如果次小生成树的总边权大于等于最小生成树的边权之和,那么可以称为非严格次小生成树。要求次小生成树,可以先求最小生成树,然后枚举非树边(不在最小生成树中的边),尝试将该边加入树中,同时从树中去掉一条边,保证最终仍然是一棵树。统计所有这些树的边权之和的最小值就是次小生成树。
2024-05-30 22:01:35
1026
原创 每周一算法:Kruskal算法求最小生成树
Kruskal 算法是一种常见并且好写的最小生成树算法,该算法的基本思想是从小到大加入边。具体来说,维护一个森林,查询两个结点是否在同一棵树中,连接两棵树。这里可以将森林抽象为一堆集合,查询两个元素是否属于同一集合,合并两个集合。其中,查询两点是否连通和连接两点可以使用并查集维护。
2024-05-23 12:20:15
904
原创 每周一算法:Prim算法求最小生成树
在一个无向图中求边权和最小的生成树,即无向连通图的最小生成树(Minimum Spanning Tree,MST)。本文介绍使用Prim算法求最小生成树。
2024-05-23 11:51:48
1182
原创 每周题解:牛的旅行
在一个无向图中,编程找出一条连接两个不同牧场的路径,使得连上这条路径后,所有牧场(生成的新牧场和原有牧场)中直径最大的牧场的直径尽可能小。
2024-05-15 23:25:21
847
原创 每周一算法:恰好经过K条边的最短路
给定一张由M条边构成的无向图,求从起点S到终点E恰好经过K条边(可以重复经过)的最短路。可以使用快速幂倍增 + Floyd 求解。
2024-05-15 22:46:22
995
原创 每周一算法:无向图的最小环
给定一张无向图,求图中一个至少包含3个点的环,环上的节点不重复,并且环上的边的长度之和最小。该问题称为无向图的最小环问题,可以使用Floyd算法求解。
2024-05-10 15:02:38
1102
原创 每周一算法:传递闭包
在交际网络中,给定若干个元素和若干对二元关系,且关系具有传递性。通过传递性推导出尽量多的元素之间的关系,这类问题被称为传递闭包。使用「Floyd」算法可以解决传递闭包问题
2024-05-09 15:22:54
1079
原创 每周一算法:二维差分
要将m块地毯铺在 n×n 的矩阵上,每块地毯会覆盖一个子矩阵,求最终每个格子被多少个地毯覆盖。这样的题目可以用二维差分进行优化。
2024-04-28 11:07:41
1148
原创 每周题解:拯救大兵瑞恩
拆点后使用BFS求最短路。如果一个点所表示的含义,已经不能满足题目所求内容时,就需要增加状态,从而满题目需求,这个过程就是拆点。
2024-04-26 21:14:56
855
原创 每周一算法:多起点最短路
反向建边的思想可以解决从多个起点出发到达终点的最短路问题,但是当终点也有多个时,则无法处理。此时,除了「Floyd」算法之外,还可以使用虚拟源点的思想来处理。虚拟源点的基本思想就是设置一个虚拟源点,从该源点到每个起点建立一条权重为0的边。这样,对于每条从起点到终点的最短路,都可以对应一条从虚拟源点出发,经过起点到达终点的最短路。这样就可以利用单源最短路算法求多起点最短路问题。
2024-04-24 10:16:29
888
原创 【每周题解】道路与航线
道路与航线的算法思想是把双向边添加到图中,那么会形成若干个连通块,可以把每个连通块看作一个点,再把单向边添加到图中,会得到一张有向无环图。在有向无环图中,无论边权正负,都可以按照拓扑序进行遍历,在线性时间复杂度内求出单源最短路
2024-04-19 11:24:55
1027
原创 每周一算法:负环判断
每周一算法:判断负环可以使用Bellman–Ford算法,时间复杂度为O(nm);也可是使用SPFA,它比Bellman-ford要快上许多倍,最好情况下的复杂度是O(km),这里的k是一个小于等于2的常数,最坏情况也是O(nm)。
2024-04-18 15:34:09
840
原创 每周一算法:旋转游戏
每一步操作有A~H一共8种选择,状态空间随着深度增加呈指数级别增长,但是答案序列不会太长,为了避免搜索超时,可以使用迭代加深A*(IDA*)实现。在每个状态下,如果中间8个格子里出现次数最多的是x,一共出现了m次,那么其余数字全变成x,至少需要8-m次操作。可以用这个作为预估步数。
2024-03-22 14:49:59
778
原创 每周一算法:迭代加深A*
把估价函数与迭代加深的DFS结合就是迭代加深A*(IDA*),基本思想是以迭代加深DFS的搜索框架为基础,把原来简单的深度限制加强为:若当前深度+未来估计步数>深度限制,则立即从当前分支回溯。
2024-03-22 10:10:17
806
scratch3.0文件打包工具-htmlifier
2020-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人