递归算法概念与实例讲解 本篇主要是围绕着递归算法的概念、实质、思想以及设计要素四个方向叙述,同时通过实例讲解,促进大家对递归算法的理解。一、算法概念递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的调用。二、算法实质递归算法就是将原问题不断分解为规模缩小的子问题,然后递归调用方法来表示问题的解。 算法基础 2022年04月21日 101 点赞 0 评论 77468 浏览
结合实例浅析构造题型 什么是构造?大家在日常做题中应该遇到过,构造题这一种题型,而且还是比赛中常见的一类题型。本篇将简要介绍构造题这类题型以及两个实例的展示。一、什么是构造?构造题是一种题型,而且还是比赛中常见的一类题型。不同于其它的算法、数据结垢题,根据查询输出结果;构造题是让你给出一组方案,使得在一定限制内符合条件。 算法基础 2022年03月27日 103 点赞 0 评论 77497 浏览
半平面交的定义和解法 一、定义半平面交是什么?我们知道一条直线可以把平面分为两部分,其中一半的平面就叫半平面。那半平面交,就是多个半平面的相交部分。我们在学习线性规划时就有用过。(1)半平面一条直线和直线的一侧。半平面是一个点集,因此是一条直线和直线的一侧构成的点集。 计算几何 2022年04月11日 68 点赞 0 评论 77539 浏览
结合实例解析双向搜索 本篇将会结合实例解析双向搜索。一、双向搜索当给出了起点状态与终点状态时,使用普通的搜索从起点向下搜索,则效率会很低,搜索树会非常庞大;所以,可以使用双向搜索,及从起点与终点同时向中间搜索,搜索到同一个状态时,将从起点与终点搜索的值相加得到最终值的搜索;一般给出“始态”与“终态”时, 搜索算法 2022年05月07日 161 点赞 0 评论 77844 浏览
回溯法入门级讲解 说到回溯法,其实就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。回溯算法能解决如下问题:(1)组合问题:N个数里面按一定规则找出k个数的集合(2)排列问题:N个数按一定规则全排列,有几种排列方式(3)切割问题:一个字符串按一定规则有几种切割方式(4)子集问题:一个N个数的集合里有多少符合条件的子集 搜索算法 2022年04月27日 234 点赞 0 评论 77871 浏览
什么是状态压缩DP? 状态压缩DP一般是基于二进制进行的。状态压缩DP一般分为两类:①基于连通性DP(棋盘式)②集合式(表示每一个元素是否在集合中)一、概述1.状态压缩状态压缩就是使用某种方法,简明扼要地以最小代价来表示某种状态,通常是用一串01数字(二进制数)来表示各个点的状态。 动态规划 2022年05月27日 148 点赞 0 评论 77878 浏览
什么是后缀数组? 对于后缀数组的概念,很多人都存在疑惑,为什么要学习后缀数组?那么我们就来说说原因,后缀数组是一个比较强大的处理字符串的算法,是有关字符串的基础算法,所以必须掌握。学会后缀自动机(SAM)就不用学后缀数组(SA)了?不,虽然SAM看起来更为强大和全面, 字符串相关 2022年03月28日 66 点赞 0 评论 78101 浏览
最大流是什么? 一、流网络G=(V,E)是一个有向图,其中每条边(u,v)有一个非负的容量值c(u,v),而且如果E中包含一条边(u,v),那么图中就不存在它的反向边。在流网络中有两个特殊的结点,源结点s和汇点t。下面给出流网络的形式化定义。令G=(V,E)为一个流网络,其容量函数为c,设s我为网络的源点,t为汇点。 图论 2022年02月25日 110 点赞 0 评论 78213 浏览
Python分治算法 分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解,是一种分目标完成程序算法,简单的问题可用二分法完成。1.分治算法我们在使用分治算法求解问题的时候是把一个问题划分为多个小问题, Python算法 2022年04月27日 88 点赞 0 评论 78584 浏览
什么是虚树? 当我们遇到一类频繁询问关键点信息的题目时,往往数据范围颇大,而对关键点总和有一定限制,此时我们可以建立虚树,将问题规模转化为关键点总和级别的。一、定义什么是虚树?当我们在树上有部分结点是无用的或用处不大的时,我们可以将其在树上删去,仅仅保留关键点和连接关键点的边。 图论 2022年01月16日 194 点赞 0 评论 78648 浏览