03 2022 档案

摘要:这就是NTR算法 ?? 渣男渣女算法 ?? 接下来要介绍的NTR算法,啊呸,不对不对,匈牙利算法,是一种确定二分图的最大匹配数量的一种非常高效的算法; 我们先介绍一下二分图的匹配以及最大匹配: 二分图的匹配:给定一个二分图 G,在 G 的一个子图 M 中,M 的边集 {E} 中的任意两条边都不依附于 阅读全文

posted @ 2022-03-27 11:54 ZheyuHarry 阅读(87) 评论(0) 推荐(1) 编辑

摘要:接下来的内容,是关于基础图论的最后一节:二分图的相关问题; 我们先简单介绍一下二分图,二分图不一定是一个连通块,可能是多个连通块组成,然后我们把所有的点分别划分为两个部分,一个在左边的点集中,另一个在右边的点集中,所有的边只存在于两个点集之间,而在点集内部是不会存在连边的,这样的图我们就叫作二分图; 阅读全文

posted @ 2022-03-27 11:35 ZheyuHarry 阅读(170) 评论(0) 推荐(1) 编辑

摘要:就如前面对Dijkstra算法进行堆优化一般,我们在这里也要对前面的Prim算法进行优化,啊,不对,彻底换个新思路; 既然我们本身是要求最小生成树对吧,所以我们肯定要让边权越小越好,那么如果我把边权按照从小到大进行排序,然后遍历,如果说这条边的两个点的根节点已经相同,也就是在同一个集合中了,那么就不 阅读全文

posted @ 2022-03-26 17:10 ZheyuHarry 阅读(33) 评论(0) 推荐(1) 编辑

摘要:首先在介绍这个算法之前我们要之明确一下什么是最小生成树的概念: 由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图G 的最小生成树。 换言之,我们不能生成环且要让边权值和最小! 这里先介绍一个Prim算法: Pri 阅读全文

posted @ 2022-03-26 16:56 ZheyuHarry 阅读(79) 评论(0) 推荐(1) 编辑

摘要:这道题是我做CodeTon Round1时的D题,总的来看思路很重要,有几个比较明显的切入问题的角度,要选择到最优的那个; 先看题目: 我们可以发现,这道题的描述一目了然,就是说我们能不能找k个数的和正好等于我们输入的n; 但是有对于这k个数的限制: ·k>=2 `k[i]%k 不相同 所以我们粗略 阅读全文

posted @ 2022-03-25 21:49 ZheyuHarry 阅读(160) 评论(0) 推荐(2) 编辑

摘要:一种新型疾病,COWVID-19,开始在全世界的奶牛之间传播。 Farmer John 正在采取尽可能多的预防措施来防止他的牛群被感染。 Farmer John 的牛棚是一个狭长的建筑物,有一排共 N 个牛栏。 有些牛栏里目前有奶牛,有些目前空着。 得知“社交距离”的重要性,Farmer John 阅读全文

posted @ 2022-03-24 14:32 ZheyuHarry 阅读(45) 评论(0) 推荐(1) 编辑

摘要:这道题也是一个对图进行operation的题目,需要用到贪心的思想: 分析题干:这里其实题目并没有说清楚,这里的chess coloring其实指的不只是是左上角那个方块涂成白色,其他就可以随便涂;其实是对于选出来的那个子矩阵,我们将其行号和列号加起来,和为偶数的涂成白色,和为奇数的涂成黑色; 但是 阅读全文

posted @ 2022-03-24 00:07 ZheyuHarry 阅读(49) 评论(0) 推荐(1) 编辑

摘要:这是一道比较经典的将数列中的数字轮换的题目,我们先看题干: 题干分析:先浅浅地分析一下题目是要我们干什么,我们会默认有一个已经升序排序地1~n的排列,然后我们会给定一个新排列是在原有排列的基础上进行operation得到的,那么我们来看看这个operation是什么: 这个operation是对每一 阅读全文

posted @ 2022-03-23 13:50 ZheyuHarry 阅读(140) 评论(0) 推荐(1) 编辑

摘要:接下来是图论问题求解最短路问题的最后一个,求解多元汇最短路问题 我们之前一般都是问1-n的最短路径,这里我们要能随便去问i到j的最短路径: 这里介绍一下Floyd算法:我们只有一个d[maxn][maxn]数组直接存储从i到j的最短路径,我们先看代码: #include<bits/stdc++.h> 阅读全文

posted @ 2022-03-21 20:47 ZheyuHarry 阅读(119) 评论(0) 推荐(1) 编辑

摘要:在Bellman-Ford算法之后,我们总算迎来了spfa算法,其实就如同堆优化Dijkstra算法之于朴素版Dijkstra算法,spfa算法仅仅是对Bellman-Ford算法的一种优化,但是在形式上,它看起来特别像堆优化Dijkstra算法罢了! Bellman—Ford算法会遍历所有边并进行 阅读全文

posted @ 2022-03-21 17:49 ZheyuHarry 阅读(272) 评论(0) 推荐(1) 编辑

摘要:这个算法也是紧承我们之前讲过的关于图论的内容,我们在前面分析图的时候说过了对于不同的图论问题,我们会有不同的求解方法,那么这里我们讲到Bellman-Ford算法是用于解决有边数限制的求解最短路问题。 我们先介绍一下我们之前讲过的Dijkstra算法为什么在这里失灵了,因为我们之前讲的Dijkstr 阅读全文

posted @ 2022-03-21 15:15 ZheyuHarry 阅读(176) 评论(0) 推荐(1) 编辑

摘要:但是,我们会发现刚刚讲的朴素Dijkstra算法(高情商:朴素 ; 低情商: 低效)的套路不适用于稀疏图,很容易会爆时间; 所以,我们要对其中的一些操作进行优化,首先我们发现找到里起始点最近的点去更新其他的点的时候是O(n)的,又因为是稀疏图我们不能用邻接矩阵来存储,所以我们就会想到用邻接表来存储, 阅读全文

posted @ 2022-03-19 22:24 ZheyuHarry 阅读(302) 评论(0) 推荐(1) 编辑

摘要:我们之前介绍的求最短路问题,我们通常会考虑到用BFS算法计算,这里我们将这样对于求最短路问题用不同的算法进行分类: 思路介绍:Dijkstra算法的思路究竟是怎么样的,我们这里先介绍一下朴素版Dijkstra算法的思路: 因为我们要去计算的是每个节点到起始点的最短距离,所以我们使用的方法是不断地迭代 阅读全文

posted @ 2022-03-19 16:43 ZheyuHarry 阅读(145) 评论(0) 推荐(1) 编辑

摘要:题目: 农夫约翰的 N 头奶牛排成一排,每头奶牛都用其品种 ID 进行描述。 如果两头相同品种的牛靠得太近,它们就会吵架。 具体的说,如果同一品种的两头奶牛在队列中的位置相差不超过 K,我们就称这是一对拥挤的牛。 请计算品种 ID 最大的拥挤奶牛对的品种 ID。 输入格式 第一行包含两个整数 N 和 阅读全文

posted @ 2022-03-15 20:59 ZheyuHarry 阅读(78) 评论(0) 推荐(1) 编辑

摘要:拓扑排序是一种新的图论的方式: 什么是拓扑排序?就是把DAG(Directed Acyclic Graph,有向无环图)的结点按照方向的顺序排序存储起来。因为我们这里说了是有向无环图,所以如果这个图中存在有向环,那么就对应的不存在拓扑排序(toposort),所以我们将采用DFS的方法来实现拓扑排序 阅读全文

posted @ 2022-03-15 19:35 ZheyuHarry 阅读(438) 评论(0) 推荐(1) 编辑

摘要:这里介绍树和图的广度优先搜索,我们要去找到那个到n最近的点,这是最短路问题,当然我们要使用BFS方式来解决这个问题 我们可以因为发现这道题的数据很小,所以我们如果遍历这个图的所有点也是很小的,所以我们利用BFS,去遍历每一个点,然后就是很平常的BFS操作,就无需多讲了,如果数据范围大了一点,我们也可 阅读全文

posted @ 2022-03-15 19:31 ZheyuHarry 阅读(55) 评论(0) 推荐(1) 编辑

摘要:这里紧承DFS和BFS之后,引出了更加普遍的关于树和图的深度优先搜索和广度优先搜索,在我看来关于树和图的深搜和广搜和前面的深搜和广搜的关系就像是,前者给你一片有限制的空间,你可以往任何地方走,但是你有可能陷入泥潭,此时就需要回溯,我们对于所给定区域的结构是已知的,但我们在走的时候还是义无反顾地去走, 阅读全文

posted @ 2022-03-15 17:38 ZheyuHarry 阅读(114) 评论(0) 推荐(1) 编辑

摘要:题目: 每天,农夫约翰的 N 头奶牛都会穿过农场中间的马路。 考虑约翰的农场在二维平面的地图,马路沿水平方向延伸,马路的一侧由直线 y=0 描述,另一侧由直线 y=1 描述。 奶牛 ii 从马路一侧的位置 (ai,0)沿直线过马路到达另一侧的位置 (bi,1)。 所有 aiai 互不相同,所有 bi 阅读全文

posted @ 2022-03-13 23:08 ZheyuHarry 阅读(174) 评论(0) 推荐(1) 编辑

摘要:这里要介绍的广度优先搜索也是搜索算法的一种,但是这个和刚刚讲到的深度优先搜索有点不一样的地方在于,深度优先搜索是一次走到底,撞了南墙才回头,而广度优先搜索是每次每个方向都走一步,然后保存起来以便之后在此基础上走。 所以这里很必要的是定义一个新的数据结构,通常是pair来存储当前问题空间的状态,然后把 阅读全文

posted @ 2022-03-13 20:38 ZheyuHarry 阅读(53) 评论(0) 推荐(1) 编辑

摘要:这里涉及到的知识是属于搜索问题,我们这里的DFS(Depth-First—Search),即深度优先搜索; 这个讨论的是图论的问题,图论的问题是关于边和点的关系 怎么考虑深度优先搜索呢,就是从起点往相邻的节点去走,边界条件是走到了目标节点后退出,搜索的方式是从一条路走到底,如果还是没有找到目标节点那 阅读全文

posted @ 2022-03-13 20:20 ZheyuHarry 阅读(75) 评论(0) 推荐(1) 编辑

摘要:什么是堆排序呢,这里大概讲讲…… 我们在这里讲到的堆,一般是二叉堆,也就是完全二叉树或者近似完全二叉树的一个数据结构。 如果说每个节点的值都大于他的任意子节点的值就叫做大根堆,反之称作小根堆。 我们通常是通过利用一个一维数组来存储一个堆的,如果说起点是从0开始,那么其左子节点就是2i+1,右子节点就 阅读全文

posted @ 2022-03-13 17:52 ZheyuHarry 阅读(45) 评论(0) 推荐(1) 编辑

摘要:今天要介绍的是yxc都说是特别牛逼的一种算法,对于处理字符串问题十分的有用! 我们先大概的简介一下这个算法,我们在之前的普通哈希中我们已经知道哈希是需要定义一个哈希函数来使一个比较大的值域映射到一个较小的区间中,但是有可能有多个值映射到同一个值上,所以我们为了处理这样的冲突,我们分别创造了开放寻址法 阅读全文

posted @ 2022-03-10 15:31 ZheyuHarry 阅读(219) 评论(0) 推荐(1) 编辑

摘要:这里将会引入一种哈希表的数据结构,粗看之下我们会觉得这个的形式特别像我们之前学过的离散化,就是将一个极大的值域映射到一个相对小的空间中以便我们的查询和删除。但是值得注意的是,离散化保序而哈希表不保序。就比如我们之前学到的离散化的求区间和,这个是需要保存其序列的,我们是对应的去求其某一段范围之内的和, 阅读全文

posted @ 2022-03-09 20:13 ZheyuHarry 阅读(40) 评论(0) 推荐(1) 编辑

摘要:来源:Atcoder ARC 136 B - Triple Shift (atcoder.jp) 题解:这道题我们不可能去硬模拟(大多数这种题都不能这样去模拟的),然后我们就要去发现特性, 发现把 ai ai+1 ai+2 变成 ai+2 ai+1 ai 的过程,并不改变这个数组中逆序对的奇偶性。 阅读全文

posted @ 2022-03-04 22:58 ZheyuHarry 阅读(59) 评论(0) 推荐(1) 编辑

摘要:来源:牛客小白月赛45 C-山楂_牛客小白月赛45 (nowcoder.com) 题目:众所周知,清楚姐姐最近迷上了一个老年游戏“山楂串”(点进去可以玩)这个游戏中我们可以将3或4个iii级糖果合并,升级成为一个高一级的糖果并且获得x∗ix*ix∗i点积分,xxx为消耗同级糖果的数量,iii为你消耗 阅读全文

posted @ 2022-03-04 22:19 ZheyuHarry 阅读(145) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示