随笔分类 - 图论
摘要:最大流 不想讲挺多关于板子的东西 还是,会个Dinic就可以开始做题了 Dinic板子练手 常见的套路就是拆点之类的东西 还有一些是二分图之类的东西,二分图是比较好看出来的 讲个拆点的再讲个二分图先 可以用网络流的数据范围都不大, 差不多 拆点 应该都知道最大流,流的属性体现在边上
阅读全文
摘要:这一篇主要是讲:点分治,也是树分治的一个入门? 点分治 解决一类路径相关问题,考虑点分治 点分治,其实叫分类讨论差不多? 树是一棵无根树,先随便钦定一个根节点 首先我们把所有路径划分成两类: 1.经过当前根节点 统计经过该节点路径的合法条数 2.不经过当前根节点 不管,因为以后会管到的 向下递归,一
阅读全文
摘要:2-SAT 模板 有 个布尔变量 , 另有 个需要满足的条件,每个条件的形式都是 「 为 true / false 或 为 true / false」。 比如 「 为真或 为假」、「 为假或 $x_
阅读全文
摘要:适用于 ,即有向无环图 定义: 设 为 上的一个点, 的入度:所有终点为 的边的数量 的出度:所有起点为 的边的数量 一开始进队的点是所有入度为 的点 然后把所有以这个点为起点的边删掉 具体操作就是直接让这条边的入度减一即可 然后如果终点出度为 就入队
阅读全文
摘要://去你妈的,关于 ,它活了 原理 其实 就是干这玩意的 由于差分约束的标准形式 和最短路的三角不等式极为相似,(三角不等式是 最短路算法原理) 于是考虑直接建图跑最短路 建图 我学的建图方式是: 对于$x_i-x_j\
阅读全文
摘要:~~估计这玩意不会有2了~~ 基环树的形态就是在一棵树上随便加一条边,这就是无向基环树 有向基环树分内向和外向 内向树是对于任何一个树上结点,这个节点总是可以到达环上节点 外向树就是反过来 然后对于这玩意的处理: 1.把环上一条边断掉当作树处理,然后考虑加上这条边的情况 2.分开处理环(断环成链)和
阅读全文
摘要:重链剖分维护的是重儿子和由一系列重儿子形成的链 重儿子就是当前节点的子节点中子树节点最多的那个子树的根节点 于是就讲了个大概 板子 题目描述 如题,已知一棵包含 个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 1 x y z,表示将树从 到 结点最短路径
阅读全文
摘要:“全是板子题“——gtm1514 这样用脑子的板子题我头一次见 二分图判定板子 点击查看代码 bool dfs(int now, int fa, int color) { col[now] = color; for (int i = head[now]; i; i = e[i].nxt) { int
阅读全文
摘要:主要内容是LCA的板子 1.倍增LCA 原理:尝试法,二进制划分和倍增 打法: 1.首先预处理每个节点在整棵树中的深度和关键信息 2.对于节点x,预处理每个2的j次方所能到达的点,这里递归变递推 3.询问lca的时候,首先调整节点的深度,较深的节点走到与较浅节点同深度位置 4.如果y走到x的位置,那
阅读全文
摘要:Prim:类似于Dijsktra算法 不过两者同源(看模板就会发现这俩长得都像套了BFS模板,事实上这两个算法都借鉴了BFS的思想) code(先咕了) 点击查看代码 #include <bits/stdc++.h> using namespace std; const int p=222; int
阅读全文
摘要:~~被这几个板子折磨~~,打一打最近学的最短路模板 1.Floyd朴素算法 优点:编程复杂度低,并且状态转移方程可以多变 缺点:时空复杂度高,不易优化 最短路 #include <bits/stdc++.h> using namespace std; #define map mymap const
阅读全文