竞赛
考级
前两期跳转在这里 第一部分 第二部分 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ PART 1 01背包 二维模板 一维模板 PART 2 完全背包 二维模板 一维模板 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 往后就真的没有内容了哈,有的话在这里加
点击跳转 笔记都是自己整理的,可能不太好,有的不是特别全 前缀和于区间和(不全) 快排+高精度 栈与队列 图+dijkstra最短路 Floyd 弗洛伊德算法+背包问题 树与二叉树 深搜+广搜+优先队列排序规则
入门天花板
目录 树: 定义: 度(树有几个直系“儿子”): 表示法: 双亲表示法(父亲表示法) 孩子表示法 二叉树: 定义: 满二叉树: 完全二叉树: 储存: 顺序存储法(完全二叉树): 链式储存法: 二叉树的遍历: 先序遍历(根左右): 以根(A)为分界,分成左右两部分(B,C)。先分左边,根(B)分两部分(D,E),再分右边,根(C)分两部分(F,G)。 中序遍历(左根右) 后序遍历(左右根) 总结: 目录
目录 FLOYD-WARSHALL(弗洛伊德算法): 核心参考代码: 关系: 距离>1的是间接朋友,距离<1的没有关系,默认值为无穷大 背包问题: 01背包(最基础的背包问题): 01背包特点: 01背包优化: 完全背包公式: 多重背包: 目录
DAY1 上午 第一课 算法入门 PART 1 算法的定义 PART 2 时间复杂度 PART 3 空间复杂度 PART 4 素数问题 1) 埃筛 原理:将所有不大于 n\sqrt{n}n 的所有质数的倍数剔除,剩下的自然数就是质数; 模板: 2) 线性筛 原理:每个非质数只被其最小的质因子对应的最大整数因子剔除 唯一分解定理历史 唯一分解定理数学解释 模板: DAY1 下午 第二课 STL模板 PART 1 VECTOR 常用成员函数: 函数名 作用 时间复杂度 val.push_back(data) 对val向后插入data O(1) val.pop_back(data) 删除尾数据 O(1) val.size() val内元素个数 O(1) val.clear() 清空val O(N) val.begin() 起始迭代器 / val.end() 末尾迭代器 / val.empty() 判空 / PART 2 SET 常用成员函数: 函数名 作用 时间复杂度 val.insert(data) 对val插入data O(log(N)) val.erase(it) 1.删除一个it迭代器所指的位置 O(1) val.erase(it) 2.删除值为it的数据 O(log(N)) val.erase(first,last) 3.删除迭代器于{last,first}的数据 O(last-first) val.size() val内元素个数 O(1) val.clear() 清空val O(N) val.begin() 起始迭代器 / val.end() 末尾迭代器 / val.find(data) 在val中寻找data O(log(N)) 模板 PART 3 MAP 常用成员函数: 函数名 作用 时间复杂度 mp.erase(it) 1.删除一个it迭代器所指的位置 O(1) mp.erase(it) 2.删除键为it的数据 O(log(N)) mp.erase(first,last) 3.删除迭代器于{last,first}的数据 O(last-first) mp.size() 键的个数 O(1) mp.clear() 清空 O(N) mp.begin() 起始迭代器 / mp.end() 末尾迭代器 / DAY2 上午 第三课课 前缀和与差分 PART 1 前缀和与区间和 PART 2 差分与区间修改 DAY2 下午 第四课 递归与递推 PART 1 递归 PART 2 递推 PART 3 例题 (1)平行线分割平面 (2)错排问题 DAY3 上午 第五课 贪心算法 PART 1 概念 PART 2 例题 活动排序 DAY3 下午 第六课 二分 PART 1 二分搜索 查找X PART 2 LOWER_BOUND AND UPPER_BOUND SORT 样例代码 DAY4 归并,快排和高精度 PART 1 归并排序 样例代码 PART 2 快速排序 PART 3 高精度算法 背景 加法 减法 乘法 ####除法 DAY5 上午 第九课 栈和队列 PART 1 栈 实验性代码[1] Part 2 队列 实验性代码 Part 3 前后中缀表达式 长度不够喽,第二部分在这里 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. 实验性代码指通过代码可视化等手段来更好的发现问题,完成纠错等环节,在后面的笔记中还会有很多 ↩︎
上半部分跳转 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ DAY5 下午 第十课 深度优先搜索 模板 DAY6 下午 第十二课 广度优先搜索 实验性代码 DAY7 上午 第十三课 树与二叉树 PART 1 背景 PART 2 树的存储 实验性代码(孩子表示法) PART 3 二叉树 二叉树的五大性质: 【性质 1】在二叉树的第 i 层上最多有 2^i − 1 个结点(i >= 1)。第 1 层最多 1 个结点,第 2 层最多 2 个结点,第 3 层最多 4 个结点…… 【性质 2】深度为 k 的二叉树至多有 2^k − 1 个结点(k >= 1) 【性质 3】任意一棵二叉树,若其叶子结点 (度为 0 结点) 的数量为 n0,度为 2 的结点数量为 n2,则:n0 与 n2 一定满足:n0 = n2 + 1 。 【性质 4】具有 n (n ≥ 0) 个结点的完全二叉树的深度为 ⌊log2(n)⌋ + 1。⌊ ⌋ 表示下取整。 【性质 5】 若将一棵有 n 个结点的完全二叉树自顶向下,同一层自左向右连续给结点编号 1,2,…,n,则: 1. 若结点编号 i = 1 ,则结点 i 为根,无父结点; 2. 若 i > 1 ,则 i 的父结点编号为 i / 2; 3. 针对编号为 i 的结点: 3.1 其左孩子编号为 2 * i (2 * i ≤ n) ; 3.2 其右孩子编号为 2 * i + 1 (2 * i + 1 ≤ n); 二叉树的存储 二叉树的遍历 DAY7 下午 第十四课 图论 PART 1 图的定义与概念 PART 2 图的存储 邻接矩阵 样例代码 邻接表 PART 3 DIJKSTRA 最短路 实验性代码 DAY 8 上午 第15课 FLOYD最短路 例题 过关道具 记忆化搜索 最后一课放不下了,点击跳转第三部分 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 完结撒花 date 8.20
MARKDOWN 标题语法 要创建标题,请在单词或短语前面添加井号 (#) 。# 的数量代表了标题的级别。例如,添加三个 # 表示创建一个三级标题 (<h3>) (例如:### My Header)。 Markdown 语法 HTML语法 # 一级标题 <h1>一级标题</h1> ## 二级标题 <h2>二级标题</h2> ### 三级标题 <h3>三级标题</h3> #### 四级标题 <h4>四级标题</h4> ##### 五级标题 <h5>五级标题</h5> ###### 六级标题 <h6>六级标题</h6> 效果: 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 可选语法 还可以在文本下方添加任意数量的 == 号来标识一级标题,或者 -- 号来标识二级标题。 Markdown 语法 最佳实践 不同的 Markdown 应用程序处理 # 和标题之间的空格方式并不一致。为了兼容考虑,请用一个空格在 # 和标题之间进行分隔。 √请这样做 ×请不要这样做 # DO this #DON't do this
定义一个类: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 根据数组递归创建线段树: 使用以下方式构建一个线段树: 例如: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 查询区间和 : 使用以下方式查询区间和: 例如: 注意:0≤左边界≤右边界≤数组长度−10 ≤左边界≤右边界≤数组长度 - 10≤左边界≤右边界≤数组长度−1 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 查询最小值 [1]: 使用以下方式查询最小值: 例如: 注意:0≤左边界≤右边界≤数组长度−10 ≤左边界≤右边界≤数组长度 - 10≤左边界≤右边界≤数组长度−1 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 查询最大值 [2]: 使用以下方式查询最大值: 例如: 注意:0≤左边界≤右边界≤数组长度−10 ≤左边界≤右边界≤数组长度 - 10≤左边界≤右边界≤数组长度−1 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 线段树的创建实例: 先输入元素个数N,然后输入N个元素。 例如: 线段树的查询实例: 先输入查询次数Q,后面Q行每次输入两个数L和R。 例如: 注意:0≤L≤R≤N−10 ≤L≤R≤N - 10≤L≤R≤N−1 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 线段树实例: 几组测试数据: * 1 * 2 * 3 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1. 作者太蠢了,这个模块的代码有BUG ↩︎ 2. 作者太蠢了,这个模块的代码也有BUG ↩︎
众所周知,我们在ACGO上是没法用用户名搜人的,但是可以通过这个直接访问个人主页 首先,进入一个团队界面(必须有管理员,没有可以自建): 然后,点击添加成员: 填入你想搜索的人的用户名: 找到你想要访问主页的用户 复制他后面的ID 最后,打开一个人的主页(随便一个人) 修改链接栏最后的数字为你复制的ID 按enter就可以访问了!
题解:
1.介绍 最简单的最短路径算法,时间复杂度为O(N^3) 2.核心代码
共7055条