摘要:
二分图 不存在长度为奇数的环 为了描述方便将两个集合分成左和右两个部分,所有匹配边都是横跨左右两个集合,可以假想成男女配对。 增广路径: 从非匹配点出发,经历非匹配边,匹配边,非匹配边,匹配边,...,非匹配点的一条路径。 二分图的一组匹配$S$是最大匹配,当且仅当图中不存在$S$的增广路。 求二分 阅读全文
摘要:
给定 \(n\) 本书,编号为 1∼n。 在初始状态下,书是任意排列的。 在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。 我们的目标状态是把书按照 1∼n 的顺序依次排列。 求最少需要多少次操作。 解: 考虑每一步决策数量,当抽取长度为 \(len\) 的一段时,有 \(n - 阅读全文
摘要:
原题链接:AcWing 168. 生日蛋糕 设当前体积是$v,h、r$分别记录每层的高度和半径,由于整个蛋糕的上表面面积等于最大蛋糕的圆面积,所以枚举到最大一层的时候直接加上即可。 **优化搜索顺序:**搜数量小的分支,可以从蛋糕最下边一层开始搜索,因为最下边一层占体积最大,然后对于枚举半径$R$和 阅读全文
摘要:
原题链接 India Fights Corona 题意: 有$n$个城市,$m$条道路,其中有些城市自己有医院,所以可以在自己城市做核酸检测,那么花费就只有就医费用,而对于那些自己没有医院的城市,需要去别的城市就医,那么他们需要花的费用就是就医费 + 路费,问最小花费是多少。 题解: 之前只写过多源 阅读全文
摘要:
剪枝常用策略: **优化搜索顺序:**可以先搜规模小的分支。 **排除等效冗余:**例如对于一个组合型枚举,$1,2,3$与$2,3,1$这是一样的,所以可以排除一下。 **可行性剪枝:**搜索过程中及时对状态进行检查,发现分支不符合本意,即提早发现是一个死胡同,就剪掉; **最优性剪枝:**如果当 阅读全文
摘要:
原题链接:1559D1. Mocha and Diana (Easy Version) 题意: 小明和小红各有一个具有$n$个结点的森林,现执行操作: 加一条边,使得两人的森林还是森林 小明加一条$(u, v)\(的边,那么小红也必须加一条\)(u, v)$的边。 问我们最多能加多少边? 思路: 很 阅读全文
摘要:
原题连接:AcWing 190. 字串变换 题意: 已知有两个字串 \(A, B\) 及一组字串变换的规则(至多 \(6\) 个规则): \(A_1→B_1\) \(A_2→B_2\) \(…\) 规则的含义为:在 \(A\) 中的子串 \(A_1\) 可以变换为 \(B_1\)、\(A_2\) 可 阅读全文
摘要:
题意 给定一张 \(N\) 个点(编号 \(1,2…N\)),\(M\) 条边的有向图,求从起点 \(S\) 到终点 \(T\) 的第 \(K\) 短路的长度,路径允许重复经过点或边。 注意: 每条最短路中至少要包含一条边。 由于直接$BFS$搜索空间特别大,所以考虑$A*$算法 以从$x$点到终点 阅读全文
摘要:
原题:八数码 在八数码中,估价函数就是所有数字在state中的位置与目标位置end中的位置的曼哈顿距离之和,即: \[ f(state) = \sum\limits^8_{i = 1} ( |state \_x_i - end \_x_i | + |state \_y_i - end \_y_i | 阅读全文
摘要:
启发式搜索 A* 从用优先队列的$BFS$开始想,优先队列的$BFS$策略显然不够完善,因为我们只在乎当前代价很小,而对于未来的搜索中,代价可能会更大,而那先当前代价大的在未来的代价中可能很小,所以为了提高搜索效率,可以对未来产生的代价进行预估,即估价函数,我们仍然维护一个堆,那么每次从堆中取出的就 阅读全文