![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM寒假集训
文章平均质量分 72
MJ的码农空间
这个作者很懒,什么都没留下…
展开
-
ACM寒假集训#7
动态规划-DP算法 它针对满足特定条件的一类问题,对各状态维度进行分阶段、有顺序、无重复、决策性的遍历求解。 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。动态规划的应用极其广泛,包括工程技术、经济、工业生产、军事以及自动化控制等领域,并在背包问题、生产经营问题、资金管理问题、资源分配问题、最短路径问题和复杂系统原创 2021-01-31 12:26:16 · 188 阅读 · 0 评论 -
ACM寒假集训#6
贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。 算法思路 贪心算法一般按如下步骤进行: ①建立数学模型来描述问题。 ②把求解的问题分成若干个子问题。 ③对每个子问题求解,得到子问题的局部最优解。 ④把子问题的解局部最优解合成原来解问题的一个解。 贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。贪心算法的特点是一步一步地进原创 2021-01-27 13:07:30 · 114 阅读 · 0 评论 -
ACM寒假集训#5
线段树 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,实际应用时一般还要开4N的数组以免越界,因此有时需要离散化让空间压缩。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。 使原创 2021-01-26 12:18:33 · 109 阅读 · 0 评论 -
ACM寒假集训#4
DFS(深度优先搜索) 深度优先搜索是一种在开发爬虫早期使用较多的方法。它的目的是要达到被搜索结构的叶结点(即那些不包含任何超链的HTML文件) 。在一个HTML文件中,当一个超链被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超链结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超链走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超链。当不再有其他超链可选择时,说明搜索已经结束。 基本思路 深度优先遍历图的方法是,从图中某顶点v出发:原创 2021-01-23 22:46:06 · 100 阅读 · 0 评论 -
ACM寒假集训#3
二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 算法复杂度 二分查找的基原创 2021-01-22 13:36:35 · 101 阅读 · 0 评论 -
ACM寒假集训#2
并查集 Day Two 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的运行时间(1~3秒)内计算出试题需要的结果,只能用并查集来描述。 并查集是一种树型的数据结转载 2021-01-21 16:14:21 · 141 阅读 · 1 评论 -
ACM寒假集训#1
*ACM寒假集训 Day One MJ的第一条博客 各大OJ网站 https://vjudge.net/ https://www.nowcoder.com/ https://pintia.com/ 竞赛常用语言C++ 绝大部分情况下用C++(效率高、code速度快),少数情况用Java(有大数)、Python(兼容度不高) 输入输出:cin cout 数组尽量放全局 数组尽量开大 时间(空间)复杂度 时间复杂度:又称时间复杂性,用来描述程序运行时间与输入数据规模的函数关系 算法中基本操作重复执行的次数是原创 2021-01-20 20:42:26 · 550 阅读 · 0 评论