![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 91
糖宋元明清
这个作者很懒,什么都没留下…
展开
-
矩阵快速幂
在讲解矩阵快速幂之前我先来讲解一下快速幂主要是为了了解快速幂的思想。快速幂:————————————————————————————————————————————快速幂解决的是求 n ^ k 的值的问题;需要注意的是这里的k非常大,往往是1e7之上的。(这里假设最后求得的值不会溢出);那么用朴素的求法来求 n^ k的过程是:n * n * n * n*n ..... *n;这样的求法往往会超时。...原创 2018-04-16 14:38:05 · 566 阅读 · 2 评论 -
匈牙利算法
首先来说明一下匈牙利算法是解决什么问题的简单来说匈牙利算法是寻找通过增广路,并通过扩展增广路找出二分图的最大匹配数的算法。从上面一句话我们可以得到几个关键词,二分图,二分图的匹配,二分图的最大匹配数,增广路。接下来我会一一解释这几个关键词(概念)的具体含义;二分图: 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集...原创 2018-04-11 10:48:26 · 2029 阅读 · 2 评论 -
sort实现字典序
可以用stl的sort函数可以对sring数组进行字典序排序。注意必须是c++中的string类;代码如下#include<stdio.h>#include<algorithm> #include<string>#include<iostream>using namespace std; int main(){ string data[...原创 2018-04-04 11:18:21 · 2473 阅读 · 0 评论 -
RMQ问题的ST解法
RMQ问题:RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A, i , j) (i , j <= n),返回数列A中最小(大)值,且该值的下标必须在i,j范围中,也就是说,RMQ问题是指求区间最值的问题。这个问题有好几种解法,在这里我只讲解ST算法(实质是动态规划)ST算法是一种在线算法,所谓在线算法,是指用户输入一个查...原创 2018-04-11 17:44:12 · 220 阅读 · 0 评论 -
从动态该规划角度理解kmp
kmp是一种高效的字符串匹配算法(模式匹配算法);给你一个主串m,模式串p。kmp可以找出p在m中的位置;比如主串m:abadabaad和模式串p:abaa;那么p在m中的位置是5;如果是纯暴力(朴素的模式匹配算法)的话时间复杂度会达到O(n*m),是比较高的;但是用kmp的话,时间复杂度会达到O(n+m);kmp是在朴素的模式匹配算法上进行优化的算法,我们首先来用一张图看一下...原创 2018-08-24 04:49:56 · 1329 阅读 · 0 评论 -
ac自动机(字符串的多模式匹配)
前面已经说过kmp是一种字符串匹配算法。就是给你一个模式串p,和一个主串m。让你找出p在m中的位置;ac自动机与kmp类似,也是一种字符串匹配算法。与kmp不同的是,kmp是单模式的字符串匹配算法。而ac自动机是多模式的字符串匹配算法。也就是给你n个模式串p1,p2,p3.......pn,和一个主串m。,让你找出这n个模式串在m中的位置。有的同学可能会进行n次kmp来解决多模式字...原创 2018-08-31 06:32:58 · 2432 阅读 · 0 评论 -
二分简单理解
在写题中经常遇到一些需要用到二分策略的题。这些题有些简单有些比较难。但是他们都遵循一些简单的原则。1.大部分题都是二分答案。2.将答案带入问题过程,由这个过程产生的信息与题目中给出的已知信息比较,确定下次的二分的区间。3.确保在这个过程中区间能不断缩小。例题讲解:POJ-3258POJ-3122...原创 2019-01-11 18:03:48 · 228 阅读 · 0 评论 -
字典树详解
字典树详解字典树是一种用于统计和排序大量的字符串的数据结构。它的原理是把具有相同前缀的字符建立一颗树。例如,我们有字符acdr,aced,bde,asd,ceed,asdr,frt进行建树的话应该是这样:...原创 2019-07-06 16:18:10 · 342 阅读 · 0 评论