算法

计数DP实例讲解

计数DP实例讲解本篇主要从计数DP上结合实例分析。一、计数类DP——整数划分整数划分大体上可以分为3类(1)考虑顺序的拆分方案(即1,1,2;和2,1,1是两种不同的方案),这种问题一般转化为……

什么是Lyndon分解?

什么是Lyndon分解?我们定义一个串是Lyndon串,当且仅当这个串的最小后缀就是这个串本身。该命题等价于这个串是它的所有循环表示中字典序最小的。引理1:如果u和v都是Lyndon串并且u<v,则uv也是Ly……

快速排序算法C/C++代码图文讲解

快速排序算法C/C++代码图文讲解快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序n个项目要Ο(nlogn)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事……

递归算法概念与实例讲解

递归算法概念与实例讲解本篇主要是围绕着递归算法的概念、实质、思想以及设计要素四个方向叙述,同时通过实例讲解,促进大家对递归算法的理解。一、算法概念递归算法是一种直接或者间接调用自身函数或者方法的算法。说简单了就是程序自身的……

线性(顺序)查找介绍与实现

线性(顺序)查找介绍与实现1.查找算法查找算法是指:从一些数据之中,找到一个特殊的数据的实现方法。查找算法与遍历有极高的相似性,唯一的不同就是查找算法可能并不一定会将每一个数据都进行访问,有些查找算法如二分查找等,并不需要完全……

C++字符串常用操作(一)

C++字符串常用操作(一)1.基本介绍在程序设计中,字符串操作是必不可缺的,无论是工程设计还是算法设计均离不开字符串,字符串是由一个个单独的字符构成的串,其数据结构是线性的,常以ASCII码表示,同时只要设定得当,其展示任何一……

离散化算法实例讲解

离散化算法实例讲解说到离散化,可能很多人不知道这是什么,小编简单给大家介绍一下,后面会详细说明,离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中,只考虑需要用的值。离散化可……

图论中的有向无环图

图论中的有向无环图在图论中,如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均……

栈的定义和特点

栈的定义和特点数据结构的重要部分,栈,栈是OI中常用的一种线性数据结构,请注意,本文主要讲的是栈这种数据结构,而非程序运行时的系统栈/栈空间,大家一定要弄清晰,别混淆了。栈的定义和特点栈(stack)是一个特殊的线……

傅里叶-莫茨金消元法的应用

傅里叶-莫茨金消元法的应用傅里叶-莫茨金消元法的英文名:Fourier-MotzkinElimination,简称FME算法,它是一种用于从线性不等式中消除变量的数学方法。它的命名源自于在1827年和1936年独立发现该算法的……