C++ 扩展数据结构
堆 在计算机科学中,堆是一种专门的基于树的数据结构,它本质上是一个完全二叉树,可以使用链式结构的树来实现,但是由于堆一定是完全二叉树,通常使用数组来实现。 将根结点最大的堆叫做最大堆或大根堆,根结点最小的堆叫做最小堆或小根堆。我们统称为堆序性。 常见的堆有二叉…
|
227
|
|
6048 字
|
1.4 小时
使用栈模拟实现递归
非递归实现组合型枚举 93. 递归实现组合型枚举 - AcWing题库 77. 组合 - 力扣(Leetcode) 递归 void dfs(int u, int cnt, int state) { // 1 if (cnt > k || cnt + n …
|
305
|
|
169 字
|
5 分钟
谈求余运算和求模运算
求余运算(Remainder) 参考链接:余数 - 维基百科 自然数的余数 定义:如果$a$和$d$是两个自然数,$d$非零,可以证明存在两个唯一的整数$q$和$r$,满足 $a = qd + r$ 且$0\leq r < d$。其中,$q$被称为商,$…
|
298
|
|
1809 字
|
24 分钟
产生伪随机数及定积分计算
伪随机数 计算机是无法产生真正的随机数的,大部分程序和语言中的随机数(比如 C 中的,MATLAB 中的),都只是伪随机数。是由可确定的函数(常用线性同余),通过一个种子(常用时钟),产生的伪随机数。这意味着:如果知道了种子,或者已经产生的随机数,都可能获得接…
|
330
|
|
482 字
|
10 分钟
算法竞赛中cin/cout和scanf/printf的耗时对比
在一次无意的做题提交中,使用cin导致TLE(Time Limit Exceeded),而使用scanf没有导致TLE,而引发了我对cin和scanf的思考,由此产生了这篇文章 cin/cout和scanf/printf速度对比 在windows平台上测试会有…
|
789
|
|
1374 字
|
21 分钟
前缀、中缀、后缀表达式
前缀、中缀、后缀表达式 前缀(prefix)、中缀(infix)、后缀(suffix)表达式是对表达式的不同记法,其区别在于运算符相对于操作数的位置不同,前缀表达式的运算符位于操作数之前,中缀和后缀同理 举例: 中缀表达式:1 + (2 + 3) × 4 - …
|
304
|
|
1595 字
|
25 分钟
动态规划 – 背包问题
背包问题 前提规范 本文使用使用额外的二维数组C[i][j],表示在有i个物品时,背包中的最大容量为j,其中这i个物品可以全选,也可以不选。 参考文章 tianyicui/pack: 背包问题九讲 (github.com) 0-1背包 有N件物…
|
387
|
|
2219 字
|
32 分钟
ACWing算法总结
AcWing 笔记 该笔记主要整理 AcWing 算法基础课中出现的算法,其中各模块未包含的算法将在模块开始位置指出 高精度算法 高精度加法 将数据读取 string 中,在将 string 中的数据逆序存储到 vector 数组中,逆序存储的好处在于当个位相…
|
235
|
|
6892 字
|
2 小时
常见算法总结
算法总结 排序算法 分类 时间复杂度 算法稳定性:在一组待排序记录中,如果存在任意两个相等的元素,我们标记为 R 和 S,且在待排序记录中 R 在 S 前,如果在排序后 R 依然在 S 前,即它们的前后位置在排序前后不发生改变,则称为排序算法为稳定的。 十大经…
|
211
|
|
11634 字
|
3.2 小时