- 博客(66)
- 收藏
- 关注

原创 NCST ACM每周知识点索引
一、背景篇1、ACM简介2、算法竞赛常见赛制及题目形式3、ACM题目常见输入问题4、ACM常见英文翻译二、语法基础篇1、C++ STL入门2、语法基础课——第一讲 变量、输入输出、表达式和顺序语句3、语法基础课——第一讲 习题4、语法基础课——第二讲 判断语句5、语法基础课——第二讲 习题三、算法基础篇1、简单素数问题2、双指针算法入门3、一种比较巧妙的高效率质数判断法4、最短路算法入门5、二分法入门及应用6、算法基础课——第三章 搜索与图论(一)7、常用排序算法描述及C
2022-02-07 15:51:22
705
原创 C++ 算法竞赛中的排序算法
本文介绍了算法竞赛中常用的冒泡排序、归并排序、快速排序,并且介绍了C++ STL 中的 sort 函数和 unique 函数。
2022-10-11 15:02:32
2738
3
原创 字符串的最小表示法
最小表示法有很多含义,比如有集合最小表示法,字符串最小表示法等.这里介绍的是字符串的最小表示法.仍给一个字符串,例如ababc.可以通过循环一位的方式构造出来n1babca2abcab3bcaba4cabab其中,就被称为这个字符串的最小表示法.O(n2)需要先把n个字符串都构造出来,这就是O(n2)的时间复杂度,还需要再从前往后遍历一遍,找到字典序最小的字符串.而最小表示法有一个算法,可以把时间复杂度降到O(n).n即,这样字符串的长度就扩大了一倍,为2n.
2022-09-02 02:00:00
1251
1
原创 [ 图 论 ]二分图判定及其匹配(基础+提高)
二分图,又称二部图,英文名叫Bipartitegraph。二分图是什么?节点由两个集合组成,且两个集合内部没有边的图。换言之,存在一种方案,将节点划分成满足以上性质的两个集合。−(OIWiki)−(OIWiki)那么首先我们先看一个一般的图当我们做这件事的时候,会发现无论怎么分,点555必然会和000或111在一个集合中,为什么?当图中有奇数环时,他一定不是二分图,反之没有奇数环的图一定是二分图当图中有奇数环时,他一定不是二分图,我们多举一个例子。...
2022-07-29 09:33:46
903
原创 最小生成树
一个连通图的生成树是一个极小的连通子图,它包含图中全部的n个顶点,但只有构成一棵树的n-1条边。生成树的属性一个连通图可以有多个生成树。一个连通图的所有生成树都包含相同的顶点个数和边数。生成树当中不存在环。移除生成树中的任意一条边都会导致图的不连通,生成树的边最少特性。在生成树中添加一条边会构成环。对于包含n个顶点的连通图,生成树包含n个顶点和n-1条边。对于包含n个顶点的无向完全图最多包含nn−2n^{n-2}nn−2颗生成树。所谓一个带权图边的权值最小的生成树。......
2022-07-15 20:38:12
688
原创 算法基础课——第二章 数据结构(一)
并查集是一种可以动态维护若干个不重叠的结合,并且支持合并与查询的数据结构,也就是擅长维护各种各样的具有传递性质的关系.并查集主要的操作分为两类优化方法(路径压缩)如不优化路径,则当树状数组深度非常大时,查找元素的祖宗节点将变得非常慢。优化后的时间复杂度则直接达到O(1),效率大大提高。下图为路径压缩前后直观对比图。优化前:优化后:原题链接例题二:原题链接...
2022-07-08 15:00:00
165
原创 算法基础课——第一章 基础算法(二)
高精度问题其实只有使用 C++ 编程语言的同学需要关注,使用 java 或 python 编程语言的同学不需要太多关注。因为 java 有大整数类,python 自带的数据范围默认就是无限大,而 C++ 没有相对应的处理大整数运算的数据结构。高精度的考察主要分为四种:高精度{加法A+B减法A−B乘法A×a除法A÷a高精度\begin{cases}加法 \quad A+B \\ 减法 \quad A-B \\ 乘法 \quad A \times a \\ 除法 \quad A \div a\end{cases
2022-07-04 13:34:22
707
原创 树形dp入门
目录2.最大独立集2.1 最大独立集的定义独立集是指图 G 中两两互不相邻的顶点构成的集合。最大独立集是具有最大尺寸的独立集。2.2例题没有上司的舞会题目链接AcWing算法基础课 285.没有上司的舞会2.3思路本道题是有向图,由上司指向职员。用动态数组去存储图的边。has_fa[i]表示i是否有父节点,1为有,0为没有。构造两个状态0,1。f[i][0]表示不选择i点时,i点及其子树能得到的最大快乐指数。f[i][1]表示选择i点时,i点及其子树能得到的最大快乐指数。j为i的儿子节点
2022-06-11 10:29:02
852
原创 DFS深度优先搜索例题
文章目录前言一、全排列问题二、n皇后问题总结前言深度优先搜算算法,又称DFS(Depth First Search)。DFS算法是一种搜索算法,而搜索算法实质上是一种枚举,即借助计算机的高性能来有目的地枚举一个问题的部分情况或这个问题的所有情况,进而求出问题的解的一种方法。一、全排列问题首先的思路是,先对第一个数遍历(1,2,3)拿1举例:第一个空位选择1,标记[1]被使用;第二个空位选没有被标记过的数字2,并且对2标记;第三个空位选择没有被标记的数字,只能选择3;三个位置都被填满后
2022-05-27 18:20:17
522
原创 树状数组基础应用
树状数组前置知识lowbit函数lowbit(x) = x & (-x)Q:这么简单的一个运算作用是什么呢?A:首先我们知道任何一个正整数都有其二进制表示,负整数的二进制表示为:该数绝对值的二进制表示的反码+1。例如,对于一个数-7,我们知道其绝对值的二进制表示为0111,那么我们就可以知道-7的二进制表示为1000+1=1001,那么此时7&(-7)的结结果就是0001。同理我们可以通过任意给定的x得到其x&(-x)的值。这里我们展示1-8之间的lowbit计
2022-05-20 09:21:19
443
原创 二叉树的前序、中序、后序遍历(递归、非递归写法)
文章目录一、什么是二叉树?二、二叉树的基本概念三、二叉树的三种遍历方式1.前序遍历(preordertraversal)1.中序遍历(inordertraversal)1.后序遍历(postordertraversal)四、代码实现1.建树过程2.递归写法3.非递归写法4.完整代码一、什么是二叉树?二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。
2022-05-13 11:41:27
2013
原创 位运算总结(一)
位运算总结(一)位运算常见的位运算1、按位与2、按位或3、按位异或4、按位取反5、左移6、带符号右移正数负数代码位运算应用Acwing 801.二进制中一的个数题目描述输入格式输出格式数据范围输入样例输出样例代码位运算程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。注意:位运算是针对二进制的运算,所以手动模拟时要先将数转化为二进制。常见的位运算按位与a&b按位或a|b按位异或a^b按位取反~a
2022-05-06 20:06:31
460
原创 数学知识:扩展欧几里得算法
扩展欧几里得算法新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdow
2022-04-29 17:35:33
1257
原创 算法基础课——第一章 基础算法(一)
第一章 基础算法(一)上课的主要任务是把算法的主要思想给理解清楚(虽然讲课的内容和英语差不多,都是以背为主,但是如果不理解算法的话,还是很难应用它的).所以我们需要对算法思想,和它为什么是对的,有一个深刻的理解.课后可以做两方面的事情:理解算法,并把模板背过(这里的背过不是一个字母一个字母地去背,而是在需要使用该算法时,能够快速地把算法的模板默写出来、调试通过就可以了);背也是有方法的,主要是完全熟悉算法思想,结合模板来理解....
2022-04-26 16:27:43
1312
1
原创 筛质数的各种方法
质数筛质数1. 质数的判定——试除法AcWing 866. 试除法判定质数输入格式输出格式数据范围输入样例:输出样例:代码2. 分解质因数——试除法AcWing 867. 分解质因数输入格式输出格式数据范围输入样例:输出样例:代码3. 筛法AcWing 868. 筛质数输入格式输出格式数据范围输入样例:输出样例:代码约数1.试除法求一个数的所有约数AcWing 869. 试除法求约数输入格式数据范围输入样例:输出样例:代码2.约数个数与约数之和AcWing 870. 约数个数输入格式输出格式数据范围输入样例
2022-04-22 16:14:20
1090
原创 树上倍增法求最近公共祖先
最近公共祖先概念定义对于节点x,y而言,如果说z节点既是x的祖先节点,也是y的祖先节点.那么我们认为z节点是(x,y)的公共祖先节点.公共祖先节点有很多,那么深度最大的节点,被称之为最近公共祖先.记为LCA(x,y)也可以认为LCA(x,y)节点,是所有公共祖先节点中,离着x,y这两个点的距离最近.以这张图片为例Lca(1,2)=1Lca(2,3)=1Lca(4,5)=2Lca(4,6)=1Lca(5,3)=1Lca(1,2)=1\\Lca(2,3)=1\\Lca(4,5)=2\\L
2022-04-07 23:24:19
385
原创 栈应用:中缀表达式,后缀表达式及表达式的计算
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、中缀表达式与后缀表达式1.中缀表达式2.后缀表达式二、将中缀表达式转化为后缀表达式三、后缀表达式的计算一、中缀表达式与后缀表达式1.中缀表达式中缀表达式就是我们日常见到的表达式写法,即运算符在两个运算数的中间。例:(5+20+1∗3)/14中缀表达式中会出现括号,这种表达式如果是人直接来进行计算的话,会比较方便,但如果编写程序,对表达式进行求值时会遇到麻烦。2.后缀表达式后缀表达式,又叫逆波兰式,其特点是操作符.
2022-04-03 16:27:39
874
原创 数据结构:哈希表
什么是哈希表?数组是我们平时常见的并且经常使用的一种数据结构,那么它具有什么优点呢?我们都知道,在我们知道数组中某元素的下标值时,我们可以通过下标值的方式获取到数组中对应的元素,这种获取元素的速度是非常快的。但是呢,数组也是有一定的缺点的,如果我们不知道某个元素的下标值,而只是知道该元素在数组中,这时我们想要获取该元素就只能对数组进行线性查找,即从头开始遍历,这样的效率是非常低的,如果一个长度为10000的数组,我们需要的元素正好在第10000个,那么我们就要对数组遍历10000次,显然这是不合理的。
2022-03-18 10:28:35
1393
原创 KMP算法基础
KMP算法基础AcWing 831. KMP字符串原题链接给定一个模式串 SSS,以及一个模板串 PPP,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串 PPP 在模式串 SSS 中多次作为子串出现。求出模板串 PPP 在模式串 SSS 中所有出现的位置的起始下标。输入格式第一行输入整数 NNN,表示字符串 PPP 的长度。第二行输入字符串 PPP。第三行输入整数 MMM,表示字符串 SSS 的长度。第四行输入字符串 SSS。输出格式共一行,输出所有出现位置的起始下标(
2022-03-11 00:00:00
237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人