02 2022 档案

摘要:最小生成树 给定一个图 $G$ 用 $n-1$条边将点连起来,得到一颗边权之和最小的树。 最小生成树有两种算法,用哪种取决于 $n,m$ 大小,边比较稀疏用 $kruskal$ 完全图或者稠密图用$Prim$ Prim算法 将图中的点分为两个集合$G1 G2$一个表示在生成树中的点,一个表示不在生成 阅读全文
posted @ 2022-02-23 12:28 Xu_brezza 阅读(79) 评论(0) 推荐(0)
摘要:并查集 一种可以动态维护若干个不重叠的集合或无向图的连通块的数据结构。 主要支持以下操作: find : 查询一个元素属于哪个集合 merge : 合并两个集合 并查集的每个集合都需要一个“爹”来表示这整个集合,所以判断两个元素是否在同一集合,就看他们爹是否相同。 有一个显而易见的初始化,对于要维护 阅读全文
posted @ 2022-02-23 11:15 Xu_brezza 阅读(230) 评论(0) 推荐(0)
摘要:dfs 裸题,大力搜索就行。。。 题里说只能向左翻,但是你可以手动分块一下,对于翻折点在右半部分的,直接翻,对于左半部分的,等价于把左边翻到右边再对称,而这已经在判断的时候检查了,所以翻折长度控制在了$\frac{len}{2}$ 所以复杂度会优一些。 #include<bits/stdc++.h> 阅读全文
posted @ 2022-02-18 15:38 Xu_brezza 阅读(154) 评论(0) 推荐(0)
摘要:$lower_bound:$用法$:lowerbound(begin,end,num)$ 在升序数组$[begin,end)$区间中查找并返回第一个大于等于$num$的数的地址。 int a[] = {1,2,3,4,5}; int x = lower_bound(a,a+5,3)-a;//x为下标 阅读全文
posted @ 2022-02-18 09:22 Xu_brezza 阅读(63) 评论(0) 推荐(0)
摘要:负环:一个图中边权之和为负数的回路 原理很简单,在$spfa$每次入队一个点的时候判断一下该点入队次数,若大于等于$n$,则说明进行了至少$n$次松弛操作,这显然是不合法的,证明每次走这条路都会使最短路更短,也就是说这条路可以反复到达并且贡献为负,这便是有负环。 bool spfa_check(){ 阅读全文
posted @ 2022-02-18 08:26 Xu_brezza 阅读(70) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-02-17 09:22 Xu_brezza 阅读(14) 评论(0) 推荐(0)
摘要:多源最短路:Floyd 所谓多源,就是求图中任意两点的最短路。 floyd是一种动态规划的做法。 首先我们给出状态定义:$f(i,j,k)$ 表示除了点$i j$外,只经过$1~k$个点, $i$到$j$的最短路,不难得出状态转移方程:$ f(i,j,k) = min(f(i,k,k-1)+f(k, 阅读全文
posted @ 2022-02-16 22:20 Xu_brezza 阅读(41) 评论(0) 推荐(0)
摘要:树状数组 这是一种基于二进制思想的数据结构,他的主要功能是维护前缀和,支持修改与求和两种操作(复杂度都是O(nlogn)),这其中又分为单点修改,区间修改,区间查询,本文会依次介绍。 入门 对于一个数,我们可以用他的二进制表示来把他拆成几个小区间,以(10101)为例,它可以拆成 $2^4 + 2^ 阅读全文
posted @ 2022-02-15 18:51 Xu_brezza 阅读(93) 评论(0) 推荐(0)
摘要:首先,在博客园里 选项-> 启用数学公式-> 保存 然后,打开CSDN,创作文章,在那里编辑公式,复制粘贴latex 最后的最后,别忘了加$ $ qwq 阅读全文
posted @ 2022-02-15 16:51 Xu_brezza 阅读(49) 评论(0) 推荐(0)