
P1 C++天梯计划
文章平均质量分 90
无
CLH_W
Hello!My name is CLH_W.Or you can call me Justa.
展开
-
【C++天梯计划】1.16 组合数学之鸽巢原理
在这篇文章中我将鸽巢原理,加减乘除法原理,排列问题,组合问题,杨辉三角分成五篇文章来写水文章。原创 2023-01-20 14:27:08 · 1015 阅读 · 0 评论 -
【C++天梯计划】1.15 线段树(Segment Tree)
线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,基本能保证每个操作的复杂度为O(lgN)。线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。原创 2023-01-04 15:07:55 · 517 阅读 · 0 评论 -
【C++天梯计划】1.14 区间最值算法(RMQ)
RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j原创 2022-12-24 21:32:33 · 1081 阅读 · 1 评论 -
【C++天梯计划】1.13 广搜(BFS)(search widely)
宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。原创 2022-12-17 20:36:35 · 1796 阅读 · 0 评论 -
【C++天梯计划】1.12 高精度算法(High Accuracy Algorithm)
高精度算法(High Accuracy Algorithm)是处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。原创 2022-12-10 21:50:35 · 1177 阅读 · 0 评论 -
【C++天梯计划】1.11 图论(graph theory)
图论是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。原创 2022-12-02 22:16:04 · 847 阅读 · 0 评论 -
【C++天梯计划】1.10 二叉树(binary tree)
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点。原创 2022-12-01 18:37:36 · 758 阅读 · 0 评论 -
【C++天梯计划】1.9 回溯法(bark tracking method)
回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。原创 2022-11-27 08:34:07 · 1093 阅读 · 0 评论 -
【C++天梯计划】1.8 哈希算法(hash)
哈希算法,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。原创 2022-11-18 22:56:53 · 1765 阅读 · 0 评论 -
【C++天梯计划】1.7 动态规划(DP dynamic programming)
动态规划(Dynamic programming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。原创 2022-11-13 14:02:30 · 700 阅读 · 2 评论 -
【C++天梯计划】1.6 深搜(DFS deep search)
所谓深搜(也叫回溯法)就是采用的是“一直往下走,走不通了就掉头,换一条路再往下走”总结来说就是递归的枚举深度优先搜索的实质就是穷举,按照一定的顺序和规则不断地去尝试,直到找到问题的解。对于一个问题的第一个状态叫做初始状态,最后要求的状态叫做目的状态。在搜索的过程中,对当前状态进行检测,如果当前状态满足目的状态,那么这个当前状态就是结果之一。原创 2022-11-12 15:10:48 · 1463 阅读 · 0 评论 -
【C++天梯计划】1.5 排列组合(Permutation and Combination)
排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个不同的元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做n个不同元素中取出m个元素的排列数,用符号A(n,m)或Amn表示。原创 2022-11-10 19:28:05 · 1013 阅读 · 0 评论 -
【C++天梯计划】1.4 贪心算法(greedy algorithm)
贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。原创 2022-11-07 19:47:03 · 966 阅读 · 0 评论 -
【C++天梯计划】1.3 递推(pecursion)
递推算法是一种用若干步可重复运算来描述复杂问题的方法。递推是序列计算中的一种常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。原创 2022-11-05 18:16:46 · 351 阅读 · 0 评论 -
【C++天梯计划】1.2 穷举(exhaustion)
穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。穷举法也称为枚举法。原创 2022-11-04 21:49:14 · 1005 阅读 · 1 评论 -
【C++天梯计划】1.1 认识C++
C++是一种计算机高级程序设计语言,由C语言扩展升级而产生 ,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计。C++拥有计算机运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。原创 2022-11-19 15:21:17 · 164 阅读 · 0 评论