首页 > TAG信息列表 > 源点
差分约束
差分约束 模板: P5960 【模板】差分约束算法 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 例题: Problem - 7176 (hdu.edu.cn) 有n个未知数,m个不等式. 将所有不等式化为:\(p_x-p_y \leq num_i\)的形式. 连接边\(y\rightarrow x\)权值为\(num_i\),类比最短路,\(dis_x-disy<=num上下界网络流
https://zhuanlan.zhihu.com/p/324507636 考虑在满足边上下界的限制下满足流量平衡。 那么先流满下界网络,然后随便流差网络,那么对于原图的一个流就是 2 者相加。但是不一定合法,因为不一定满足流量平衡。 我们考虑从需要流满的下界网络入手。 需要明确的是,我们现在只有 1 个目标。P2805
前置知识:\(\text{tarjan}\) 缩点或拓扑排序判环 至少要有一种方法判环。 前置知识:最大权闭合子图 可以看第一篇题解的讲述或者先写一下模板题。 题意: P2805 [NOI2009] 植物大战僵尸 在大小为 \(N\times M\) 的网格图上,每个点都有一株植物。 每株植物都有一个能源值,以及其防御位有源汇有上下界最小流
link 洛谷上的板子被合并了。不是很妙。 直接说整体流程吧。第一步统计每个点出流量和入流量的差值,如果出的多就从源点向出点连边,否则就向汇点连边。然后原图上每条边都重新赋值为上下流量之差,跑最大流,如果源汇点都能流满说明存在可行流,需要注意的是要额外连一条从原汇点到原源点UVA 515 King题解
来水写一篇差分约束系统的题解。 洛谷题目链接 POJ题目链接 差分约束相信大家都会,就是写出不等式,然后将题目转化为图上问题即可 这道题目的特殊之处就是用到一个超级源点,超级源点就是这个点与所有的边连一条边权为零的边,便于跑 SPFA (当然跑 bellman 也不拦着你)。 不等式 根据题目网络流
流网络 带权的有向图 G=(V,E),满足以下条件,则称为网络流图: 仅有一个入度为0的顶点s,称s为源点 仅有一个出度为0的顶点t,称t为汇点 每条边的权值都为非负数,称为该边的容量,记作c(i,j)。 我们来随便画一个小图 这个东西可以理解成什么呢,源点s是一个水库,一个无尽水的水库,然后我们把水最短路径算法
弗洛伊德 迪杰斯特拉 图G(V,E) V是点集,E是边集。 S 是已求出最短路径的顶点集合 U 是V-S。 未优化 初始时S只包含源点,即S={v},顶点v到自己的距离为0。U包含除v以外的其他顶点,v到U中顶点i的距离为其边上的权值(两点可达)或者为∞(两点不可达)。 从U中选取一个顶点u,顶点v到顶点u的后缀自动机 (SAM) 学习笔记
定义 后缀自动机(\(\text{Suffix Automaton}\),简称 \(\text{SAM}\))是一种用于字符串处理的有限状态自动机(\(\text{DFA}\)),它根据母串的所有后缀构建,能识别出母串的所有子串,且构造算法复杂度接近线性,实际上是 \(O(n\log |\Sigma|)\),\(|\Sigma|\) 是字符集大小,这里将 \(|\Sigma|\) 看Leetcode6081. 到达角落需要移除障碍物的最小数目-----0-1BFS
题目表述 给你一个下标从 0 开始的二维整数数组 grid ,数组大小为 m x n 。每个单元格都是两个值之一: 0 表示一个 空 单元格, 1 表示一个可以移除的 障碍物 。 你可以向上、下、左、右移动,从一个空单元格移动到另一个空单元格。 现在你需要从左上角 (0, 0) 移动到右下角 (m - 1,Dijkstra算法详解(完美图解、趣学算法)
摘自:https://blog.csdn.net/qq_45776662/article/details/107177424 Dijkstra算法详解 Dijkstra算法设计 Dijkstra算法简介 Dijkstra算法的基本思想 Dijkstra贪心策略 完美图解 伪代码详解 完整代码 算法解析及优化拓展 使用优先队列的完整代码 相关题的题解 最小花费2020/Bellman-Ford+SPFA
Bellman-Ford: 一. 前置知识: 算法要求图中没有边权和为负的回路。图中的回路是非负的 -> 最短路径一定不会有回路 -> 任意两个点的最短路径最多只包含 $n-1$ 条边 一条最短路上(假设这条路径是源点- ...-$k$-$i$ 点),“源点-...-k” 这条路径是 点k 的最短路。所以说要想求 $i$ 的最CF938D题解
题面 Description: 给定一个 \(n(1\leq n\leq2\times10^5)\) 个点的无向图 \(G\) 和数组 \(a\),对于每个 \(i(1\leq i\leq n)\),求出 \(\min_{j=1}^n(2\times\operatorname{dis}(i,j)+a_j)\)。 因为题目把所有路径长度乘了个 \(2\),所以下文的讲述中默认将边权 \(\times2\)。 如果我day1.矩阵距离
BFS证明 多源BFS 求矩阵中每个0到最近的1的距离(有很多源点,求到其他点的到每个源点的最短距离) 矩阵距离 1.按距离扩展:距离为0的点、为1、为2、为3...的点。 2.建立虚拟源点,求虚拟源点到其他点的最短距离(Dijkstra) 上图Dijkstra求从虚拟源点到其他点的最短距离,等价于BFchk list
按照智障程度排序 2022.4.15 P4211豹翎: 线段树是一款 if(l<=mid) change(lef(u),l,r); if(r<mid) change(rig(u),l,r); 2022.4.22 P4098 10pts: 当你维护的是单增栈当然可以STL的 lower_bound 和 upper_bound 但是单减栈不行,因为朴素的 lbw 和 upw 只适用于单调不减的数组 所以AcWing 456. 车站分级 拓扑排序
车站分级 今日份DAG呈上 题目 https://www.acwing.com/problem/content/458/ 思路 题意:同一趟车次内,停靠的车站\(a\)的等级严格大于未停靠的车站\(b\)的等级 所以可以根据\(a>b\)来建边(即,所有未停靠站建边指向所有停靠站) 优化:对于两个点集之间,可以在中间建立一个虚拟源点,复杂度O(n洛谷P2517 HAOI2010 订货 (费用流)
标准的费用流问题,关键在于巧妙地建模 一共有n个月份,源点设为0,汇点设为n+1 1.源点向所有月份连边,容量为正无穷,费用为该月进货的费用 2.每个月向下一个月连边,容量为仓库容量,费用为存货费用 3.每个月向汇点连边,容量为该月卖货的数量,费用为0(卖货不会产生费用) 用最小费用最大流求解即可最短路(dijkstra、堆优化dijkstra、bellman-ford、spfa、floyd)
一、朴素dijkstra算法(基于贪心) //重复n-1次,每次在剩下的未确定最短路的点中,找距离源点最近的点,用这个距离来更新每个点到源点的距离 int dijkstra() { memset(dist, 0x3f, sizeof dist); dist[1] = 0; for (int i = 0; i < n - 1; i ++ ) //n-1次 {Spfa 求含负权边的最短路 + 判断是否存在负权回路
在Bellman-Ford算法之后,我们总算迎来了spfa算法,其实就如同堆优化Dijkstra算法之于朴素版Dijkstra算法,spfa算法仅仅是对Bellman-Ford算法的一种优化,但是在形式上,它看起来特别像堆优化Dijkstra算法罢了! Bellman—Ford算法会遍历所有边并进行松弛操作,然而我们应该知道很多的更口胡图论
前言 本文大多是口胡,可能有误。 大多数都是参考 oi-wiki, 还有一些其他巨巨的博客。 还有 二分图最大权匹配,一般图匹配,一般图最大匹配... 没学, 懒得学了,不常考(flag)。 最短路 oi-wiki 最短路算法 floyd: \(O(n^3)\)。 spfa: \(O(nm)\)。 判负环存在,严谨做法是建个超级源点,跑sAcWing 1137. Choose the best route(朴素dijkstra反向建图 or 虚拟源点法)
题目比较简单,讲两种做法 法一、二都是用的朴素dijkstra算法 法一:反向建图 求终点s到每个起点的最短距离 O(T * (n^2 + n))(T表示多组测试数据)820ms #include <bits/stdc++.h> using namespace std; const int N = 1010, M = 2e4+10; #define inf 0x3f3f3f3f int g[N][N],POJ 3585 Accumulation Degree
题意 给定一颗无向带权树,权值代表两点间流量的最大值,现在要你找出一个节点作为源点,向叶子节点流水(根节点的水流可以认为无限大),使整棵树的流水量最大。 分析 本题是一个“不定根”的树形dp问题,很容易想到一种朴素的解法:枚举源点,每次做一次树形dp,时间复杂度 O(N2)。 我们如果用“换图论(网络流的基本概念)
流网络(可以有环的有向图) 流网络有两个特殊的点:源点S,汇点T。 流网络中每条边都有一个属性:流网络的容量:相当于水管的流量的限制。 源点有无穷多的流量,汇点有无穷多的容量。 G=(V,E) 注:假设不存在反向边 当然对于有反向边的情况,也可以在反向边上加一个点,这样就相当于没有反向边了[可能有用科技]从Push-Relable到HLPP
前言 应该没有毒瘤出题人会去卡 \(\textsf{Dinic}\) 和 \(\textsf{ISAP}\) 吧。 最大流 首先明确我们要干什么 —— 求最大流。 然后用那个最常见的比喻 : 源点是自来水厂向外输水,源点输出的所有水都需要汇入污水处理厂,但是水管是有流量上限的。 那么有一个非常 \(\textsf{naive}\)C++基础:差分约束系统
基本思路:利用最短路中di≤dj+c(j指向i,边权为c,此指算法结束后)将求解三角不等式组转换为(单源)最短路问题 三角不等式(组): xi≤xj+ck 其中xi、xj是自变量,ck是常量 差分约束系统有如下功能: 求不等式组的可行解 源点需要满足条件:从原点出发,一定可以走到所有的边。故可设“超级源点”HDU 6166 Senior Pan 题解(二进制分组+最短路)
题目大意 hdu oj已挂,就不写代码了 有一个 n 个点 m 条边的有向带边权图。现在给你 k 个点, 问 k 个点中最近的点对距离。 n, m, k <= 100000 题目思路 思考一个问题: 给定两个点集A和B,求A中的点到B中的点的最近距离。 新建一个源点S,往A中的所有点连一条边权为0的边。 新建一个汇点T,B