摘要: 算法介绍 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next( 阅读全文
posted @ 2019-07-23 07:56 魑吻丶殇之玖梦 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 单调栈 单调栈是栈内元素具有严格单调性的一种数据结构。 模板题链接:单调栈 由于我们要找到每个数左边第一个比它小的数,那么我们便可以发现: 对于栈中任意一个数,如果在它右边存在一个数比它小(或相等),那么这个数便是不可能被选中的,直接弹出栈即可。 于是我们便可以进行如下操作: 按序枚举每一个数,准备 阅读全文
posted @ 2019-07-22 21:43 魑吻丶殇之玖梦 阅读(276) 评论(0) 推荐(1) 编辑
摘要: 我们以一道题为例来介绍卡特兰数: 题目链接:满足条件的01序列 给定n个0和n个1,它们将按照某种顺序排成长度为2n的序列,求它们能排列成的所有序列中,能够满足任意前缀序列中0的个数都不少于1的个数的序列有多少个。 输出的答案对109+7取模。 为了便于解决,我们可以把这个问题转化成: 给定一个n* 阅读全文
posted @ 2019-07-22 18:47 魑吻丶殇之玖梦 阅读(536) 评论(0) 推荐(2) 编辑
摘要: 组合数问题一: 给定n组询问,每组询问给定两个整数a,b,请你输出的值。 1≤n≤10000,1≤b≤a≤2000 模板题链接:组合数一 问题特点:数据组数较多,a,b的范围较小,且要求对一个定值取模。 解决方法:杨辉三角 因为a,b范围非常小,直接利用杨辉三角打表即可。 代码实现: 组合数问题二 阅读全文
posted @ 2019-07-21 21:25 魑吻丶殇之玖梦 阅读(1601) 评论(0) 推荐(2) 编辑
摘要: 一、扩展欧几里得算法 裴蜀(Bézout)定理 对任何整数a、b和它们的最大公约数d=gcd(a,b),一定存在整数x,y,使ax+by=d成立。 下面证明裴蜀定理: 证明: 在欧几里得算法的最后一步,即b=0时,显然有一对整数x = 1,y = 0,使得a*1+0*0=gcd(a,0)。 当b>0 阅读全文
posted @ 2019-07-19 22:11 魑吻丶殇之玖梦 阅读(388) 评论(0) 推荐(1) 编辑
摘要: 一、算数基本定理及推论: 算数基本定理 任何一个大于1的自然数N,如果N不为质数,都可以唯一分解成有限个质数的乘积 ,这里均为质数,其诸指数 是正整数。 这样的分解称为N的标准分解式。 推论1 算数基本定理中N的正约数个数为: 。 简单证明一下:根据算数基本定理 可知,对于其中的任意一个pi(i∈[ 阅读全文
posted @ 2019-07-19 20:50 魑吻丶殇之玖梦 阅读(758) 评论(0) 推荐(1) 编辑
摘要: 一、快速幂 原理: 快速幂的原理十分简单。 ak=a2^0*a2^1*a2^2*…a2^x,其中k=20+21+22+…+2x。 这显然是正确的。因为任何一个数都可以表示成二进制。 接下去利用位运算实现即可。 代码实现 模板题链接:快速幂 代码模板如下:时间复杂度O(logk) 值得一提的是,以上代 阅读全文
posted @ 2019-07-19 19:32 魑吻丶殇之玖梦 阅读(1635) 评论(0) 推荐(1) 编辑
摘要: 定义 小于n的正整数中与n互质的数的数目(φ(1)=1) 通式 证明: 设p是N的质因子,1~N中p的倍数有p,2p,3p,…,(N/p)*p,共N/p个。 同理,若q也是N的质因子,则1~N中q的倍数有N/q个。 根据容斥原理,1~N中除去q的倍数与p的倍数后,数的个数为N - N/p - N/q 阅读全文
posted @ 2019-07-19 13:40 魑吻丶殇之玖梦 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 一、埃拉托斯特尼(Eratosthenes)筛法 算法思想: 要得到自然数n以内的全部素数,必须把不大于 的所有素数的倍数剔除,剩下的就是素数。给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5 阅读全文
posted @ 2019-07-18 22:06 魑吻丶殇之玖梦 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 首先明确概念: 二分图:设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 奇数环:一个图中边数为奇数的环。 染色法原理: 首先任意取出一个顶点 阅读全文
posted @ 2019-07-17 21:54 魑吻丶殇之玖梦 阅读(1956) 评论(0) 推荐(2) 编辑