自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Visors的博客

一位NOIP蒟蒻

  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 Tarjan求无向图割点

文章目录无向图的割点及判定对搜索起点的处理对重边的处理参考实现Tarjan算法的核心思想已经在《Tarjan求无向图割边》中介绍了,不清楚的读者可以先行阅读那部分内容,这里直接从介绍割点开始。无向图的割点及判定对于无向连通图G(V,E)G(V,E)G(V,E),若删去点v∈Vv\in Vv∈V及其邻边∀u∈{V−v},(v,u)∈E\forall u\in \{V-v\}, (v,u)\in E∀u∈{V−v},(v,u)∈E后,GGG被分为两个或更多互不连通的子图,则称vvv为割点或割顶。根据上面

2020-10-31 14:18:19 270 1

原创 Tarjan求无向图割边

There's nothing in your eyesThat marks where you criedAll is blank all is blindDead inside the inner mind ——YMO《Behind The Mask》文章目录Tarjan算法无向连通图的搜索树时间戳dfn追溯值low无向图的割边及判定对重边的处理参考实现Tarjan算法不得不说Robert Tarjan真的是大师,发个网站大家感受一下——论文索引。这里要说的Tarjan算法用于解.

2020-10-31 13:04:53 380

原创 第十届蓝桥杯C++ B组省赛解题思路

A 组队最稳妥的方法是把数据copy出来写个搜索,当然也可以尝试直接在纸上找答案,有风险。另外还有一种想法,因为一眼看上去这个答案就很接近500,先找到一组接近500的情况,然后类似找增广路一样看能否增大解。B 年号字串这不就是tmd26进制么,除26取余。C 数列求值写个递推,又快。除非你使用python,否则要对每项%10000.D 数的分解直接枚举。E 迷宫BFS。处理字典序仅需在建立方向数组时按照上右左下顺序即可。F 特别数的和好水//// Created by Viso

2020-10-16 02:36:17 446

原创 匈牙利算法

很早之前就学过最近再温习一下,毕竟匈牙利算法虽然在解决二分图最大匹配问题上复杂度不如Dinic,但编程复杂度低很多,而且不容易写错。其实如果对网络流有所涉猎,再来学习二分图最大匹配问题就太好理解了。此处默认读者已经了解了二分图最大匹配的问题模型及基本的网络流知识,若对网络流没有了解可以参见我的另一篇博客网络流的核心思想.二分图问题可以很容易转化成网络流模型,即在原图中添加一源一汇,源点与左部各点相连,容量为111,右部各点与汇点相连,容量为111。由是我们只需跑一遍最大流即可求得二分图最大匹配。例如对

2020-10-08 11:34:25 217

原创 最小路径覆盖转二分图模型

最小路径覆盖所谓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 212

原创 关押罪犯(二分+二分图判定)

题意其实就是给出了一个罪犯冲突网络,我们需要将一些罪犯分进两座监狱,以此删去一部分边。由于一名罪犯不可能即跟自己监狱里的狱友起冲突,又跟另一座监狱里的罪犯起冲突,所以显然这是一个二分图模型,即两部分内的罪犯各自不跟自己部分的罪犯起冲突(并不是两座监狱里的罪犯集)。前面说到,我们的操作是删去一部分边,使最后权值最大的边最小,而又因为图需成立,所以显然删去边后我们需要保证图最终为二分图。由于本题答案具备单调性,即如果任取一个界限xxx,我们删去所有权值大于等于xxx的边后,如果剩余图为二分图,则xxx合法,

2020-10-06 21:01:52 252

原创 网络流24题之太空飞行计划——最大权闭合图转最大流模型

做网络流24题时感觉就是对建图能力的挑战,本来应该好好整理一下的,奈何时间不足,尽在此简述一下。一开始做这题时想了另外一个建图方式,但实际上是我读错题目了。这题只要求净收益最大,而不要求所有实验都需要进行。只关心收益的情况下,我们就可以考虑一种合适的建图方法,仅以钱为权重。这里就可以使用闭合图模型。闭合图不是环看见闭合图这个名词,相比很多人都会以为是含有一个很大的环的图(你懂的),但事实上并不是。定义一个有向图G=(V,E)G=(V,E)G=(V,E)的闭合图(closure)是该有向图的一个点集,

2020-10-02 18:43:00 153

原创 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 330

原创 ISAP算法

ISAP 的意思是 Improved SAP ,即改进的 SAP ,而 SAP(Shortest Augument Path,最短增广路)算法其实指的就是 Edmonds-Karp 算法。但事实上,ISAP 更像是 Dinic ,而不是 SAP。

2020-09-28 15:22:43 1450 1

原创 Dinic算法

相比于EK算法,Dinic算法在稀疏图上效率相当(可视n、m相近),而在稠密图上的处理更优秀。对网络流基本思想不清楚可参见我的另一篇博客《网络流的核心思想》。分层思想Dinic算法在每次增广前,先用 BFS 来将图分层。设源点的层数为000,那么一个点的层数便是它离源点的最近距离。通过分层,可起到如下两种效果:如果不存在到汇点的增广路(即汇点的层数不存在),我们即可停止增广。确保我们找到的增广路是最短的(每次找增广路的时候,都只找比当前点层数多111的点进行增广)。两个优化多路增广:在

2020-09-27 04:42:28 2754

原创 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 386

原创 网络流的核心思想

很久以前学网络流的时候觉得网络流复杂生涩,其实网络流正如其名,是一个非常形象的水流动的模型。理解下面两个概念,并掌握找到、操作他们的方法,网络流的各类算法其实很容易被记忆和实现。

2020-09-24 23:26:31 415

原创 链式前向星

链式前向星之前一直习惯用邻接表存图,链式前向星几乎没有写过,但是最近看一些图论的复杂问题时,只找到了用链式前向星写的博客,所以就准备整理个按我的码风写的链式前向星的模版。大多数博客讲解链式前向星时都读着生硬(可能是受限于文字载体),我有幸看到AgOH的讲解视频,觉得该视频对链式前向星的讲解足够明晰。视频中将链式前向星与邻接表中要素建立起联系,想了解链式前向星原理可移步上视频。看完后我用自己的码风实现如下://// Created by Visors on 2020/9/22.//// 题目名:【

2020-09-22 19:14:22 122

原创 一种对 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 219 1

原创 状态压缩 最短Hamilton距离 吃奶酪

给定一张n个点的带权无向图,点从0~n-1标号,求起点0到终点n-1的最短Hamilton路径。 Hamilton路径的定义是从0到n-1不重不漏地经过每个点恰好一次。

2020-08-24 14:11:29 279

原创 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 160

原创 DFS/BFS求解树的直径及其无法用于负权图的证明

当我从各种博客中学习这个算法时,并没有看到相关前提的提出以及对本问题如此详尽的分类证明。本着希望读者能和我一样在面对不严谨的网络资源时能严谨的考量其中知识的目的,我写下了这篇博客。

2020-08-20 17:32:10 891 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 495

原创 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 183

原创 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 314

原创 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 285

原创 牛客编程巅峰赛S1赛季第1场 - 青铜&白银局

文章目录牛客编程巅峰赛S1赛季第1场 - 青铜牛客网新办的编程系列线上赛,主要面向求职者,所以提交的方式接近LeetCode。内含三题思路及代码

2020-07-10 14:12:37 267

原创 Codeforces Round #653 (Div. 3)解题报告

Codeforces Round #653 (Div. 3) A~E1解题报告,含机翻、思路、代码。

2020-07-06 17:05:36 426

原创 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 466

原创 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 660

原创 八皇后问题

八皇后问题C++实现

2016-06-17 18:18:47 1442 2

原创 NOIP普及组2013 计数问题

这题过于水了。不多说,上代码。#include<bits/stdc++.h>using namespace std;const int N = 1000005;int n,x,tot=0;char a[N];int main(){ cin>>n>>x; for(int i=1;i<=n;i++){ sprintf(a+1,"%d",i);

2016-04-10 19:31:32 1363

原创 Uva 11582 Colossal Fibonacci Numbers!

Uva 11582 Colossal Fibonacci Numbers!解题报告

2016-03-12 22:05:18 636

原创 全国信息学奥林匹克联赛(NOIP2011)复赛 提高组 day2 T2 聪明的质监员

讲过二分已经一段时间,现在老师又找一道二分题来练手#A#,起初就是对两个大大的西格玛有点兴趣,做起来发现这题出题人还是很心机的啊啊!现在来一波题目:2.聪明的质监员 (qc.cpp/c/pas) 【问题描述】 小 T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 n 个矿石,从 1 到 n 逐一编号,每个矿石都有自己的重量 wi 以及价值 vi。检验矿产的流程是:

2016-03-06 16:35:38 1634

NOIP硬币翻转问题

在桌面上有一排硬币,共N枚,每一枚硬币均为正面朝上。现在要把所有的硬币翻转成反面朝上,规则是每次可翻转任意N-1枚硬币(正面向上的被翻转为反面向上,反之亦然)。求一个最短的操作序列(将每次翻转N-1枚硬币成为一次操作)。

2016-07-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除