摘要: 最小生成树是图论当中的重要知识,想要解决该类问题一般是有2种算法,分别是普利姆(Prim)算法和克鲁斯卡尔(Kruskal)算法。 1.普利姆(Prim)算法 Prim算法跟之前用来求最短路算法的Dijkstra算法极其相似,主要分为两种,分别是稠密图和稀疏图。稠密图我们可以采用朴素版的Prim算法 阅读全文
posted @ 2022-07-23 15:16 chengjiayi1018 阅读(791) 评论(1) 推荐(0)
摘要: Dijkstra算法适用于单源最短路问题且边权都不为负的情况。它同时适用于有向图和无向图。 讲一下原理:(图片来自bilibili大佬从0开始数) 我们有一个无向图 我们要从0节点走向4节点,要是经过的边权之和最短,应该怎样走? 这时我们就需要用到Dijkstra算法来帮助我们求最短路。 我们需要一 阅读全文
posted @ 2022-07-17 22:48 chengjiayi1018 阅读(172) 评论(0) 推荐(2)
摘要: 动态规划除了背包问题以外,还有很多的内容。譬如求最长公共子序列,最长上升子序列和求最佳路径等等等等。这些都是非常重要的。 1.最长公共子序列问题 这类题目顾名思义,就是求两个序列中的最长公共子序列(不必连续,但是要按顺序)。对于这种题,我们可以采用DP的思想来完成。 题目传送门 此题根据题目就可以知 阅读全文
posted @ 2022-07-15 19:00 chengjiayi1018 阅读(55) 评论(0) 推荐(0)
摘要: 背包问题的普及范围之广,几乎是占据了dp (动态规划) 算法的半壁江山,尤为重要。而01背包作为背包问题的基础,也是更加重要。 先介绍一下01背包问题: 现在有n个物品,背包容积为m,每件物品都有它的重量和价值,现在问怎样取才能使背包内总物品价值最大(每件物品最多取一次)。 这就是01背包问题。 提 阅读全文
posted @ 2022-07-14 17:56 chengjiayi1018 阅读(112) 评论(0) 推荐(0)
摘要: 在我们编写C++程序时,求幂运算常常会消耗我们比较大的时间。用我们普通的求幂运算方法(n个x重复相乘),时间复杂度会达到O(n)。对我们的程序编写十分不利。那么,我们就有了一种新算法——快速幂。 快速幂使用了倍增的思想,减少循环次数时间复杂度可以达到O(log n)。对程序的编写十分有利。 下面附上 阅读全文
posted @ 2022-07-14 17:44 chengjiayi1018 阅读(183) 评论(0) 推荐(0)
摘要: 快读: inline int read(){ char c = getchar();int x = 0,s = 1; while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();} while(c >= '0' && c <= '9') 阅读全文
posted @ 2022-07-11 21:57 chengjiayi1018 阅读(57) 评论(0) 推荐(0)
摘要: 作者很蒻,在这里总结一下自己学一小点hash的经验。 hash可以用于查找,速度很快,可以近似看作为O(1)的时间复杂度,缺点是占用空间比较大,不过在竞赛中这种空间换时间的方式还是值得的。 哈希冲突是说不同的元素的关键字有可能相同,不能保证一个关键字与元素是一一对应的,这样就产生了哈希冲突。 如果想 阅读全文
posted @ 2022-07-11 21:47 chengjiayi1018 阅读(118) 评论(0) 推荐(0)
摘要: 作者很菜,只会一点简单的知识。所以我准备从洛谷上的P3865 【模板】ST 表开始讲。 再发一遍题目传送门 首先此题 N≤10^5,M≤2*10^6,硬跑绝对不现实。那我们就要想办法优化。而ST表可以很好的帮助我们解决这个问题。 ST表可以解决区间最值问题,即RMQ问题。它的运行速度十分快,可以做到 阅读全文
posted @ 2022-07-11 21:08 chengjiayi1018 阅读(156) 评论(0) 推荐(0)
摘要: 组合数学范围挺广的,今天就介绍集中 1.加法/乘法原理 该部分过于简单,不多作介绍。 2.排列 Q1:什么是排列? 在我们已有的n个元素中,选出m个进行排列(满足m≤n,且均为自然数)。叫做从n个不同元素中,取出m个元素进行排列。 Q2:用符号怎么表达? 排列表示为A(Arrangement) 一般 阅读全文
posted @ 2022-07-11 20:31 chengjiayi1018 阅读(163) 评论(1) 推荐(0)
摘要: 洛谷题 题目传送门 首先,看到题目中的“最大”二字,基本可以断定这是一道排序题目 问题来了,怎样排序? 选择?冒泡?快排?归并? 都不用! 只需要用algorithm库里的sort! 但是,当我们使用sort排序排序整数时,会出现1000>999的情况,无法满足题目需求。于是我思来想去,决定用str 阅读全文
posted @ 2022-07-03 12:11 chengjiayi1018 阅读(202) 评论(0) 推荐(0)