随笔分类 - A. 知识点
摘要:总目录 > 7 数据结构 > 7.2 哈希表 前言 很久很久以前经常听到哈希这个词,后来多多少少有所接触,但并未系统地了解过哈希到底是怎么回事。 更新日志 20200804 - 进行部分调整,增加例子 子目录列表 1、哈希表与数组 2、哈希函数 3、构造哈希函数 4、哈希冲突 5、字符串 hash
阅读全文
摘要:总目录 > 7 数据结构 > 7.1 栈,队列与链表 前言 马上要考数据结构了,停更一个星期后决定先把数据结构这一块复习一遍。 子目录列表 1、数据结构简介 2、栈 3、队列 4、链表 7.1 栈,队列与链表 1、数据结构简介 数据结构,顾名思义,计算机存储数据的结构。最简单的,变量,数组,都是数据
阅读全文
摘要:总目录 > 1 语言基础 > 1.4 C++ 语言基础 > 1.4.4 命名空间 前言 可能是目前最简短的一篇?因为实在不知道可以和哪一篇一起讲了。 更新日志 20200903 - 增加作用域和全局/局部变量的介绍。 20211023 - 作用域、全局/局部变量等内容移至 1.2 C 语言进阶。 1
阅读全文
摘要:总目录 > 1 语言基础 > 1.4 C++ 语言基础 > 1.4.3 指针与引用 前言 当年学 Pascal 时就极度不理解指针这么个玩意儿,以至于搞 OI 这么多年几乎从没使用过指针; 大一学 C 的时候给其他同学答疑,多次触碰到指针这么个知识盲区,不得不赶紧补习一下; 这学期补修的 C++ 里
阅读全文
摘要:总目录 > 3 搜索 > 3.2 四种改进搜索算法 前言 上一节介绍的是最基础的 DFS 和 BFS,适用范围很广,但是针对性不强,遇到一些模型比较特殊的,可能效率就不够高了。这里介绍的四种改进的搜索,在特定情况下会更优于普通的搜索。 子目录列表 1、双向搜索 2、折半搜索 3、迭代加深搜索 4、启
阅读全文
摘要:总目录 > 3 搜索 > 3.1 DFS / BFS 搜索 前言 重中之重的一个知识!也是算法设计中非常非常基础的一部分,OI 这么多年一直陪伴在身边,是大部分不能得到正解只求部分分时的最佳选择,通常我们称之为“暴力搜索”,它写起来不伤脑筋,能够处理数据量小的情况,而且有时灵机一动再优化一下,甚至能
阅读全文
摘要:总目录 > 2 算法基础 > 2.7 前缀和与差分 前言 没有想到前缀和也被单独拿出来作为一节来讲,不过也好,还可以顺便讲讲前面又碰到了一次的多维前缀和以及差分。 子目录列表 1、前缀和 2、差分 3、多维前缀和 2.7 前缀和与差分 1、前缀和 前缀和:对于数列 a,其第 1, 2, ..., i
阅读全文
摘要:总目录 > 2 算法基础 > 2.6 倍增思想 前言 倍增通常和二分一起介绍,共同点在于——它们都能神奇地将原本复杂度为 n 的过程下降到 log n,对于大型数据而言,这种效率的提高是显而易见的。 子目录列表 1、二进制与倍增 2、例题 3、应用 2.6 倍增思想 1、二进制与倍增 众所周知,二进
阅读全文
摘要:总目录 > 2 算法基础 > 2.5 二分思想 前言 一个当时了解得相当晚的思想,乍一看好像和分治差不多味道,其实本质区别还是很大的,当时甚至还有混淆。二分主要是用于二分查找和二分答案,这里还会提一下三分。 子目录列表 1、二分与分治 2、二分查找 3、二分答案 4、三分 2.5 二分思想 1、二分
阅读全文
摘要:总目录 > 2 算法基础 > 2.4 排序十讲 前言 好好地总结一下排序算法啦,虽然在大多数情况下意义不大,毕竟 C++ 自带 sort,但巩固下基础总没有错。 子目录列表 1、时间复杂度 2、选择排序 3、冒泡排序 4、插入排序 5、计数排序 6、基数排序 7、桶排序 8、归并排序 9、快速排序
阅读全文
摘要:总目录 > 2 算法基础 > 2.3 贪心思想 前言 算法基础的第三部分!这几部分其实讲述的都不太详细,因为许多内容都算比较清楚了,也不想太深入讨论,不过应该后面会进行补充。 子目录列表 1、贪心 2、背包问题 3、正确性证明 2.3 贪心思想 1、什么是贪心 顾名思义,贪心算法是指以一种贪婪的思维
阅读全文
摘要:总目录 > 2 算法基础 > 2.2 递归与分治 前言 递归是一种非常常用的算法思想,太多太多地方使用了。 (总目录:https://www.cnblogs.com/jinkun113/p/12528423.html) 子目录列表 1、递归 2、分治 2.2 递归与分治 1、递归 递归的基本思想是函
阅读全文
摘要:总目录 > 7 数据结构 > 7.5 Huffman 哈夫曼树 前言 这是一篇原网站没有涉及到的知识点,很久之前也学过了,趁着数据结构课要做实验就再复习下好啦。 子目录列表 1、最优二叉树 2、构造方法 3、哈夫曼编码 4、译码 5、代码 7.5 Huffman 哈夫曼树 1、最优二叉树 哈夫曼树(
阅读全文
摘要:总目录 > 2 算法基础 > 2.1 枚举与模拟 前言 这篇文章是在不知道该写些什么,但是作为算法里最基本的东西,还是得给点排面哈。 子目录列表 1、枚举算法 2、模拟算法 2.1 枚举与模拟 1、枚举算法 枚举是基于现有知识来猜测答案的一种问题求解策略,是最最基础的算法之一,基本上没有难度。随便举
阅读全文
摘要:总目录 > 1 语言基础 > 1.1 C 语言基础 前言 这篇文章对 C 语言里一些最基础的编程知识进行简要介绍。因为对 C / C++ 大部分入门内容都轻车熟路了,有些地方可能就不恰当地略过了。 更新日志 20200713 - 分支与循环部分施工完毕。 20200716 - 所有内容全部施工完毕。
阅读全文
摘要:总目录 > 1 语言基础 > 1.5 C++ 进阶 > 1.5.1 类与对象 前言 这篇文章首先主要介绍 C++ 中最重要的特性——类 class,以及和它密切相关的对象。C++ 刚刚诞生时就被人们称作 “C With Class”,足以看出 class 对 C++ 意义之大。其实之前学了很久的 C
阅读全文
摘要:前言 学 C++ 若干年,几乎没离开过 Dev-C++,有时候需要在 Ubuntu 环境下考试/比赛,就比较简单地学习了 Emacs,但并不熟练。后来在 C++ 资深玩家 bebe 的引导下(以及 asm 实验报告美观度的刚需),装上了 VS Code,不要太好看。(但还没进行配置) 这篇文章大致介
阅读全文
摘要:总目录 > 4 动态规划 > 4.4 树形 / DAG / 数位 DP 前言 本文主要介绍动态规划的集中进阶模型——树形 DP、DAG 上的 DP、数位 DP。不同于之前的基础模型的一点是,它们的状态并非单纯地建立在线性关系或者二维空间上,而是在树结构,图,数位上进行转移,相对之下可能更麻烦,但其实
阅读全文
摘要:总目录 > 4 动态规划 > 4.3 区间 DP / LIS / LCS 前言 本文主要介绍动态规划的其他几种基础模型——区间 DP、LIS、LCS。区间 DP,LIS 和背包 DP 一样都是线性动态规划(背包 DP 虽然也可以是二维数组,但其实质依然是线性的),相比之下,它们的状态转移更为复杂,而
阅读全文
摘要:总目录 > 4 动态规划 > 4.2 背包 DP 前言 本文介绍动态规划集中最基本的模型之一:背包 DP。作为最经典的动规模型,基本所有初学 DP 的最先接触的都是背包问题。 子目录列表 1、什么是背包 2、01背包及滚动数组 3、完全背包 4、多重背包及其优化 5、混合背包 6、二维费用背包 7、
阅读全文