![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm
文章平均质量分 93
Visors
这个作者很懒,什么都没留下…
展开
-
匈牙利算法
很早之前就学过最近再温习一下,毕竟匈牙利算法虽然在解决二分图最大匹配问题上复杂度不如Dinic,但编程复杂度低很多,而且不容易写错。其实如果对网络流有所涉猎,再来学习二分图最大匹配问题就太好理解了。此处默认读者已经了解了二分图最大匹配的问题模型及基本的网络流知识,若对网络流没有了解可以参见我的另一篇博客网络流的核心思想.二分图问题可以很容易转化成网络流模型,即在原图中添加一源一汇,源点与左部各点相连,容量为111,右部各点与汇点相连,容量为111。由是我们只需跑一遍最大流即可求得二分图最大匹配。例如对原创 2020-10-08 11:34:25 · 234 阅读 · 0 评论 -
最小路径覆盖转二分图模型
最小路径覆盖所谓DAG的路径覆盖,即在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联。#mermaid-svg-8vopoyGDkRf90ox0 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-8vopoyGDkRf90ox0 .label text{fill:#333}#m原创 2020-10-07 20:07:39 · 224 阅读 · 0 评论 -
关押罪犯(二分+二分图判定)
题意其实就是给出了一个罪犯冲突网络,我们需要将一些罪犯分进两座监狱,以此删去一部分边。由于一名罪犯不可能即跟自己监狱里的狱友起冲突,又跟另一座监狱里的罪犯起冲突,所以显然这是一个二分图模型,即两部分内的罪犯各自不跟自己部分的罪犯起冲突(并不是两座监狱里的罪犯集)。前面说到,我们的操作是删去一部分边,使最后权值最大的边最小,而又因为图需成立,所以显然删去边后我们需要保证图最终为二分图。由于本题答案具备单调性,即如果任取一个界限xxx,我们删去所有权值大于等于xxx的边后,如果剩余图为二分图,则xxx合法,原创 2020-10-06 21:01:52 · 272 阅读 · 0 评论 -
网络流24题之太空飞行计划——最大权闭合图转最大流模型
做网络流24题时感觉就是对建图能力的挑战,本来应该好好整理一下的,奈何时间不足,尽在此简述一下。一开始做这题时想了另外一个建图方式,但实际上是我读错题目了。这题只要求净收益最大,而不要求所有实验都需要进行。只关心收益的情况下,我们就可以考虑一种合适的建图方法,仅以钱为权重。这里就可以使用闭合图模型。闭合图不是环看见闭合图这个名词,相比很多人都会以为是含有一个很大的环的图(你懂的),但事实上并不是。定义一个有向图G=(V,E)G=(V,E)G=(V,E)的闭合图(closure)是该有向图的一个点集,原创 2020-10-02 18:43:00 · 175 阅读 · 0 评论 -
MCMF (EK + SPFA)
//// Created by Visors on 2020/9/30.//// 题目名:【模板】最小费用最大流// 题目来源:luogu// 题目链接:https://www.luogu.com.cn/problem/P3381// 算法:MCMF.cpp// 用途:最小费用最大流// 时间复杂度:O(TODO)//#include <bits/stdc++.h>using namespace std;const int oo = 0x3f3f3f3f;typ原创 2020-10-02 11:28:57 · 351 阅读 · 0 评论 -
ISAP算法
ISAP 的意思是 Improved SAP ,即改进的 SAP ,而 SAP(Shortest Augument Path,最短增广路)算法其实指的就是 Edmonds-Karp 算法。但事实上,ISAP 更像是 Dinic ,而不是 SAP。原创 2020-09-28 15:22:43 · 1507 阅读 · 1 评论 -
Dinic算法
相比于EK算法,Dinic算法在稀疏图上效率相当(可视n、m相近),而在稠密图上的处理更优秀。对网络流基本思想不清楚可参见我的另一篇博客《网络流的核心思想》。分层思想Dinic算法在每次增广前,先用 BFS 来将图分层。设源点的层数为000,那么一个点的层数便是它离源点的最近距离。通过分层,可起到如下两种效果:如果不存在到汇点的增广路(即汇点的层数不存在),我们即可停止增广。确保我们找到的增广路是最短的(每次找增广路的时候,都只找比当前点层数多111的点进行增广)。两个优化多路增广:在原创 2020-09-27 04:42:28 · 2837 阅读 · 0 评论 -
Edmonds-Karp动能算法
Edmonds-Karp的思想其实就是基于网络流基本思想的BF算法,即对于含有反向边的残量网络,贪心增广每一条增广路的可改进量,直到残量网络不含增广路。对网络流基本思想不清楚可参见我的另一篇博客《网络流的核心思想》以下是我基于链式前向星存储方式实现的Edmonds-Karp算法。//// Created by Visors on 2020/9/25.//// 题目名:【模板】网络最大流// 题目来源:luogu// 题目链接:https://www.luogu.com.cn/problem/P原创 2020-09-26 16:48:47 · 419 阅读 · 0 评论 -
网络流的核心思想
很久以前学网络流的时候觉得网络流复杂生涩,其实网络流正如其名,是一个非常形象的水流动的模型。理解下面两个概念,并掌握找到、操作他们的方法,网络流的各类算法其实很容易被记忆和实现。原创 2020-09-24 23:26:31 · 432 阅读 · 0 评论 -
链式前向星
链式前向星之前一直习惯用邻接表存图,链式前向星几乎没有写过,但是最近看一些图论的复杂问题时,只找到了用链式前向星写的博客,所以就准备整理个按我的码风写的链式前向星的模版。大多数博客讲解链式前向星时都读着生硬(可能是受限于文字载体),我有幸看到AgOH的讲解视频,觉得该视频对链式前向星的讲解足够明晰。视频中将链式前向星与邻接表中要素建立起联系,想了解链式前向星原理可移步上视频。看完后我用自己的码风实现如下://// Created by Visors on 2020/9/22.//// 题目名:【原创 2020-09-22 19:14:22 · 137 阅读 · 0 评论 -
一种对 2 的幂巧妙的 Hash 方法
看书时看到一个有趣的事实:∀k∈[0,35]\forall k\in[0,35]∀k∈[0,35], 2kmod 372^k\mod 372kmod37 互不相等,且恰好取遍整数 [1,36][1,36][1,36].原创 2020-08-24 21:59:09 · 250 阅读 · 1 评论 -
状态压缩 最短Hamilton距离 吃奶酪
给定一张n个点的带权无向图,点从0~n-1标号,求起点0到终点n-1的最短Hamilton路径。 Hamilton路径的定义是从0到n-1不重不漏地经过每个点恰好一次。原创 2020-08-24 14:11:29 · 293 阅读 · 0 评论 -
O(1)64位快速乘
原理十分简单,即a∗bmod p=a∗b−⌊a∗b/p⌋∗pa*b\mod p = a*b - \lfloor a*b/p \rfloor*pa∗bmodp=a∗b−⌊a∗b/p⌋∗p。代码如下:typedef long long ll;inline ll mul(ll a, ll b, ll p) { a %= p, b %= p; ll c = (long double) a * b / p; cout << c << endl; ll an原创 2020-08-24 09:31:17 · 175 阅读 · 0 评论 -
DFS/BFS求解树的直径及其无法用于负权图的证明
当我从各种博客中学习这个算法时,并没有看到相关前提的提出以及对本问题如此详尽的分类证明。本着希望读者能和我一样在面对不严谨的网络资源时能严谨的考量其中知识的目的,我写下了这篇博客。原创 2020-08-20 17:32:10 · 973 阅读 · 2 评论 -
求解单源最短路的Dijkstra算法
文章目录求解单源最短路的Dijkstra算法算法描述解集dist初始化松弛贪心地进行松弛操作伪代码求解单源单汇点未完求解单源最短路的Dijkstra算法Dijkstra算法1,英文为Dijkstra’s algorithm,常被译为迪杰斯特拉算法。该算法由Edsger Wybe Dijkstra2在1956年发现。Dijkstra算法使用类似BFS的方法解决带权无负权图的单源最短路问题。算法描述解决单源最短路,便是需要求解图GGG上某个源点sss到其它点v∈V−{s}v\in V- \lbrace原创 2020-07-29 22:54:05 · 511 阅读 · 0 评论 -
EOJ Monthly 2020.7 C - OLED
文章目录EOJ Monthly 2020.7 C - OLED题意思路代码EOJ Monthly 2020.7 C - OLED题目链接题意这道题很有意思,我前几天看一篇关于macOS的时钟屏保的文章,里面就提到过以前的老式显示器会遇到烧屏问题。如果你不太懂,想想以前XP的默认屏保,一个Windows的图标在屏幕上随机飞你就知道了。在这道题中,为了简化问题,我们将屏幕视为点阵,把屏保图案也当作是个矩形点阵,并认为屏保图案会等概率出现在屏幕上的所有合法位置。值得一提的是屏幕点阵范围正好是4K UH原创 2020-07-20 11:57:50 · 198 阅读 · 0 评论 -
Codeforces Round #655 (Div. 2)解题报告
文章目录Codeforces Round #655 (Div. 2)解题报告A - Omkar and Completion思路代码B - Omkar and Last Class of Math思路代码Codeforces Round #655 (Div. 2)解题报告A - Omkar and Completion思路一开始还在思考怎么构造,然后通篇没看见说构造的元素不能重复,那就全1好了……代码//// Created by Visors on 2020/7/11.//#inclu原创 2020-07-13 16:35:30 · 345 阅读 · 0 评论 -
Cormen — The Best Friend Of a Man
题面题意思路代码题面B. Cormen — The Best Friend Of a Man time limit per test1 second memory limit per test256 megabytes input standard input output standard outputRecently a dog was bought f原创 2020-07-10 14:46:59 · 306 阅读 · 0 评论 -
牛客编程巅峰赛S1赛季第1场 - 青铜&白银局
文章目录牛客编程巅峰赛S1赛季第1场 - 青铜牛客网新办的编程系列线上赛,主要面向求职者,所以提交的方式接近LeetCode。内含三题思路及代码原创 2020-07-10 14:12:37 · 285 阅读 · 0 评论 -
POJ 1611 The Suspects并查集统计集合元素个数
目录The SuspectsDescriptionInputOutputSample InputSample OutputMy Code and Note The SuspectsTime Limit 1000MS Memory Limit 20000K Total Submissions 53051 Accepted ...原创 2019-01-26 14:46:03 · 481 阅读 · 0 评论 -
Codeforces Round #377 (Div. 2) 解题报告
Codeforces Round #377 (Div. 2) 解题报告Problem A. Buy a ShovelProblem B. Cormen — The Best Friend Of a Man原创 2016-11-04 19:20:51 · 689 阅读 · 0 评论