自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 AC自动机

AC自动机适用于多模式串的匹配,即可以匹配多个模式串在主串中,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法。

2022-04-29 16:20:30 293

原创 Manacher算法

Manacher 算法用于求解字符串中最长回文子串的问题。

2022-04-21 16:51:15 3934 2

原创 Z函数(扩展KMP)

介绍一种字符串算法——Z函数,并且将其扩展到解决扩展KMP问题。

2022-04-16 14:55:04 1357 1

原创 莫队算法思想

莫队算法是由前国家队莫涛提出的一种算法,主要应用在一类离线区间查询的问题中,同时具有多种扩展的应用,其主要思想是分块。

2022-04-13 09:54:47 733

原创 分块算法思想及应用

所谓分块算法,就是将一个完整的区间,分成几块不同的区间,然后对这些区间进行处理。

2022-04-13 09:36:33 937

原创 KMP算法

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。

2022-04-07 10:54:49 499

原创 7种常用简单排序算法

7种简单排序算法小结假设所有的排序都是从小到大进行的问题:给定n个元素,输出这n个元素从小到大的顺序(第一行读入一个n,接下来读入n个元素,每个元素不超过100)(n < 100)样例输入:621 25 49 28 16 8样例输出:8 16 21 25 28 49**稳定性描述:**假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相...

2019-10-30 15:54:27 1089 1

原创 中国剩余定理

中国剩余定理今有物不知其数,三三数之余二;五五数之余三;七七数之余二。问物几何?答案:23口诀:三人同行七十稀,五树梅花廿一枝,七子团圆月正半,除百零五便得知其实原问题就是求解以下的同余方程组{x≡2 (mod  3)x≡3 (mod  5)x≡2 (mod  7)\left\{\begin{aligned}x \equiv 2 \, (mod \,\, 3) \\x \eq...

2019-09-25 12:33:00 2074

原创 最小费用流

最小费用流所谓费用流就是,在普通的网络流当中,每一条边加上一个费用,求出一组解,使得在流量满足一定的情况下,费用的花费情况。既然要求费用最小的情况,很容易想到要使用最短路径,把每一条边的费用当成距离,这样得到的路径费用总和是最小的,就可以用最短路径算法求从sss到ttt的最短路径,再结合之前的沿着这条路径增广即可。不过在求最短距离的时候,要加一个条件,就是保证这条边有流量,否则就没有意义了...

2019-09-24 13:10:27 1140

原创 搜索算法——IDA*

搜索算法——IDA∗IDA*IDA∗算法介绍IDA∗IDA*IDA∗是基于深度优先搜索进行优化的一种算法,又被称作为迭代加深搜索,是一种启发式搜索算法。什么叫做迭代加深呢?实际上深搜会搜索很多层,几乎是呈指数级增长的,但是实际上可以通过限制搜索深度来优化。在深度没有上限的情况下,先预先估计一个较小的深度kkk,首先搜索KKK层,如果没有找到解,深度加111,从头开始搜索到k+1k+1k+1...

2019-09-15 17:08:34 1436

原创 素数判定方法

目录素数素数判断优化一优化二(强推)埃拉托斯特尼筛法欧拉筛法素数素数判断素数是指在大于111的自然数中,除了1和它本身之外不再有其他因数的自然数判断一个数nnn是否为素数自然可以利用这一点来,使用循环从2到n-1的位置,依次判断能否被这个数整除。bool is_prime (int x) { if(x < 2) return false; for(int i = 2; ...

2019-09-03 23:14:39 1023

原创 乘法逆元解法

费马小定理扩展欧几里得欧拉函数

2019-08-31 00:54:35 185

原创 markdown latex 笔记

# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题一级标题二级标题三级标题四级标题五级标题六级标题*斜体***加粗*****粗斜体***~~删除号~~> 引用文本,表示内容从别的地方引用> >引用是可以嵌套的下面这个表示分割线---[百度](www.baidu.com)![当你图...

2019-08-28 22:13:08 214

原创 对拍程序

对拍例如测试大整数加法程序是否正确首先需要准备3个程序你认为是正确的程序 (bigAdd.cpp)比较有把握的暴力程序(Add.cpp 保证在小规模数据中一定是正确的)数据生成器 (gen.cpp)数据生成器(对拍器gen.cpp)#include <iostream>#include <cstdlib>#include <ctime>u...

2019-08-27 17:15:14 161

原创 有源汇上下界最大流

目录有源汇上下界最大流无源汇有上下界可行流有源汇的上下界最大流。有源汇上下界最大流只记录一下做法,原理不证明。。有源汇上下界最大流,指的是有nnn个点,mmm条边,每条边eee有一个流量下届lowerlowerlower和流量上界upperupperupper,给定源点sss和汇t点,求源点到汇点的最大流(相当于在之前的最大流的基础上,每条边加上一个流量下界,来求最大流)做这个题之前先...

2019-08-24 12:04:47 1412 1

原创 最大流算法

最大流算法网络流基础概念网络流在一个有向图G=(V,E)G= (V,E)G=(V,E)中:有一个唯一的源点S(入度为000:出发点)有一个唯一的汇点T(出度为000:结束点)图中的每一条边都一个非负的权值,这个权值叫做容量c(u,v)c(u, v)c(u,v)满足上述条件的图GGG称为网络流图,记为G=(V,E,C)G= (V,E,C)G=(V,E,C)可以想象成,如果把每条边...

2019-08-22 18:04:13 16103

原创 矩阵加速

目录矩阵加速(一些题目)例1 斐波那契数列例二 数列例3 Blocks例4 Fibonacci Sum例5 Matrix Power Series小结矩阵加速(一些题目)要做矩阵加速首先要明白**矩阵快速幂**明白了矩阵快速幂后就可以通过矩阵的乘法来加速递推例1 斐波那契数列题目链接题目大意求第nnn项斐波那契数模100000000710000000071000000007的值。nn...

2019-08-19 17:10:39 2094 1

原创 矩阵快速幂

矩阵快速幂快速幂首先来考虑普通的快速幂,即求ab%ma^b{\%}mab%m的值,其中1≤a,b,m≤1091\leq a,b,m\leq10^91≤a,b,m≤109假设要求a22a^{22}a22,我们可以按照222的幂数将a22a^{22}a22分解如下:a22=a16∗a4∗a2a^{22} = a^{16} * a^4 * a^2a22=a16∗a4∗a2而十进制的222222...

2019-08-18 17:48:53 328

原创 Hie with the Pie(Floyd 状压DP)

POJ 3311 Hie with the Pie题目大意一个披萨店要请司机来送披萨,这家店最多接受10个订单,由于预算的问题,只能雇佣一名司机,要求用最短的时间,从披萨点出发送完最后再回到披萨店(途中可能不止一次经过一个地方)。输入测试数据可能有多个,第一行包含一个整数nnn (1≤n≤101 \leq n \leq 101≤n≤10),接下来的n+1n+1n+1行,每行包含n+1n+1...

2019-08-17 16:15:20 359 1

原创 Knapsack problem (超大01背包)

FZUOJ 2214 Knapsack problem之前的01背包都是在枚举背包的容量,时间复杂度可以优化到O(N∗V)O(N*V)O(N∗V),但是如果背包的总的容量非常大的话,就没办法枚举背包容量来进行计算了。题目描述(题目链接)有一个背包,容量为BBB,同时有nnn个物品,每个物品有一个重量www和价值vvv,要求将物品装入背包中,使得总价值最大。约束条件1≤n≤5001 \l...

2019-08-13 15:22:00 282 1

原创 动态规划——简单背包问题

一、01背包 问题描述:一个旅行者有一个最多能装 M 公斤的背包,现在有 n 件物品,它们的重量分别是W1,W2,…,Wn,它们的价值分别为C1,C2,…,Cn,求旅行者能获得最大总价值。输入第一行:两个整数,M(背包容量,M ≤ 200)和N(物品数量,N ≤ 30);第2…N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。输出仅一行,一个数,表示最大总价值。样例输入...

2019-08-13 00:35:30 237

原创 Face The Right Way (POJ 3276)(开关灯模型)

POJ 3276 Face The Right Way记录一下自己的理解的思路。。题目大意N&ThinSpace;&ThinSpace;(1≤N≤5000)N\,\,(1 \leq N \leq 5000)N(1≤N≤5000)头牛排成一列,每头牛的方向都是向前或者向后。为了让所有的牛都朝前,农夫约翰买了一台自动转向的机器。这个机器的作用是使连续的KKK的头牛转向,请求出让所...

2019-08-07 23:20:49 96

原创 尺取法

尺取法概念所谓尺取法,就是像一把尺子一样,在变换尺子的长度中,一段段的截出满足条件的序列,然后进行相应的操作适用条件尺取法一般适用于在连续区间内求解问题,例如连续之和之类的。通过不断地变换尺子的长度,来选择最优的满足条件的序列。解题步骤选取相应的左右端点并初始化推进右端点直到满足条件判断当前的序列是否满足条件,不满足则跳出更新相应的答案左端点推进一步,缩小尺子范围重复2~6...

2019-08-06 20:32:54 373

原创 Smallest Difference(POJ 2718)(暴搜)

POJ 2718 Smallest Difference题目大意:​ 有一组数字,每个数字的范围在000到999之间,且数字不会重复出现,要求,从中选取一部分数字组成一个整数,剩下的数字组成另外一个整数,求这两个整数的差的绝对值的最小值是多少?(000不能作为数字的开头,但是只选择数字000的时候可以)输入第一行一个TTT,表示测试的数据有多少组接下来TTT行,每行都有一些数字,每个数字...

2019-08-03 16:00:39 134

原创 青蛙的约会(POJ 1061 扩展欧几里德算法)

POJ 1061 青蛙的约会题目大意:两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远...

2019-08-01 11:45:13 1563

原创 扩展欧几里德算法

目录扩展欧几里得算法欧几里得算法代码扩展欧几里得算法概念推导代码求解线性同余方程两个定理代码扩展欧几里得算法欧几里得算法用来求两个数的最大公约数,通过辗转相除的方式。代码int gcd (int a, int b) { return b ? gcd(b, a%b) : a;}扩展欧几里得算法概念用来求已知一组(a,b)(a,b)(a,b)的时候,求一组解(x,y)(x,y)(...

2019-08-01 00:40:47 213

原创 Semi-prime H-numbers(POJ 3292)

POJ 3292 Semi-prime H-numbers题目大意:​ 形如4n+14n + 14n+1的数被称为HHH数,乘法在“H−H-H−数”内组成集合是封闭的,在这个集合中只能被111和它本身整除的数叫“H−H-H−素数“,其余的数叫做”H−H-H−合数“,在”H−H-H−合数“中还存在着”H−H-H−合成数“,”H−H-H−合成数“是一个只能分解成两个“H−H-H−素数“乘积的”H−...

2019-07-31 15:42:51 127

原创 Layout(POJ 3169)

POJ 3169 Layout题目大意约翰养了NNN头牛,编号从111到NNN,现在,它们要进食,按照编号顺序排成一排。牛之间存在一些关系,所以希望彼此之间至少要满足某个距离,此外,可能存在多头牛挤在同一个位置上。现在有MLMLML个关系好的牛的信息(AL,BL,DL)(AL,BL,DL)(AL,BL,DL)以及MDMDMD个关系不好的牛的信息(AD,BD,DD)(AD,BD,DD)(AD,B...

2019-07-29 19:43:21 310

原创 Tarjan(原理、应用)

目录Tarjan一、算法介绍二、原理三、应用1、求强连通分量例1 [[POJ 3180]](http://poj.org/problem?id=3180) The Cow Prom例2 [[POJ 2186]](http://poj.org/problem?id=2186)受欢迎的牛2、求割点例题 [[洛谷 3388]](https://www.luogu.org/problem/P3388) 割...

2019-07-29 11:20:21 310

原创 Roadblocks(POJ 3255)

POJ 3255 Roadblocks题目大意:​ 某个街区有RRR (1≤R≤100,000)(1 ≤ R ≤ 100,000)(1≤R≤100,000)条道路,NNN (1≤N≤5000)(1 ≤ N ≤ 5000)(1≤N≤5000)个 路口,道路双向通行,求111号路口到NNN号路口的次短路径长度是多少?(同一条边可以经过多次)输入第一行nnn,rrr。接下来rrr行三个整数AA...

2019-07-24 14:07:19 179

原创 并查集

并查集一、原理、结构并查集是一种可以用来管理元素分组的数据结构,可以高效的进行合并和查询。实际就是,有N个元素的集合,一开始每一个元素本身就是一个集合,然后随着将不同的集合合并,然后就出现了联合很多集合的大的集合,这时候可以查询某两个元素是否为一个集合。通俗的解释:摘自:原博客话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人...

2019-07-22 12:12:09 181

原创 二叉搜索树

二叉搜索树二叉搜索树(BST)是能够高效进行以下操作的数据结构插入一个数值查询是否包含某个数值删除某个数值二叉搜索树的存储特性,所有的节点都满足左子树上的所有节点都比自己小,右子树上的所有节点都比自己大,并且树中没有重复的值。一般有3种操作,插入,查找和删除,查找和删除都比较简单,只需要往比较关键值的大小,不断往左右子树寻找即可,直到找到正确的位置例如下图,是一棵二叉搜索树如......

2019-07-20 15:16:42 105

原创 HustOJ快速搭建

简单记录一下搭建过程腾讯云 Ubuntu Server 16.04.1 LTS 64位 + HustOJHustOj Github地址1、使用以下脚本快速安装wget https://raw.githubusercontent.com/zhblue/hustoj/master/trunk/install/install-ubuntu16+.shsudo bash install-ubun...

2019-06-24 16:38:31 4281

原创 八数码问题

题目描述在3×33×33×3的棋盘上,摆有八个棋子,每个棋子上标有111至888的某一数字。棋盘中留有一个空格,空格用000来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765123804765123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。输入输入初始状态,一行九个数字...

2019-06-22 18:27:58 621

原创 图论——欧拉路径

目录一、定义1.基本概念2.判断二、例题一、定义1.基本概念欧拉路径: 图G中的一条路径,能够通过图中的每一条边,并且每条边仅通过一次欧拉回路: 就是闭合的欧拉路径欧拉图: 包含欧拉回路的图2.判断有向图:欧拉路径:有一个点出度比入度多1(起点),有一个点入度比出度多1(终点),其余点出度等于入度;欧拉回路:每个顶点出度等于入度;无向图:欧拉路径:有且仅有两个点的入度为...

2019-06-06 16:18:22 3494 1

原创 线段树

目录一、基本概念二、基本操作三、例题分析一、基本概念二、基本操作树的建立单点查询单点修改区间查询区间修改三、例题分析

2019-06-03 11:02:08 112

原创 Atcoder077abc

C - Snuke Festival 题目大意:        一个祭坛由333部分组成,每个部分都分为上中下三个部分,对于这三种部分,每一部分都有NNN个,其中第iii个上部的大小是AiAiAi,第iii个中部的大小是BiBiBi,第iii个下部的大小是CiCiCi。   &nbs...

2019-05-27 14:32:29 201

原创 树状数组(基础)

树状数组简介树状数组是一种数据结构,非常适用于数列中点以及区间的查询或更新,例如求区间的和,可以直接扫描一遍这个区间,复杂度是O(n)O(n)O(n),如果要操作MMM次呢?那么最坏情况下复杂度变成了O(M∗N)O(M*N)O(M∗N),当数据规模十分庞大的时候是很划不来的,如果使用树状数组,复杂度会变成O(M∗log(n))O(M*log(n))O(M∗log(n))原理首先来看一张图...

2019-05-26 19:05:47 308

原创 搜索算法——A*算法

简述A∗A*A∗算法是优化过后的bfsbfsbfs算法,是一种启发式搜索,什么叫启发式搜索呢?它是利用问题拥有的启发信息来引导搜索,达到减少搜索范围、降低问题复杂度的目的(百度百科)那是如何启发的呢?通过考虑两个因素,一个是已经行驶过的距离,一个是估计要行驶的距离。首先来看一个最简单的BFSBFSBFS的算法的寻路过程,假设绿色的格子是起点,红色的格子是终点,我们来看一下bfsbfsbfs的...

2019-05-21 22:42:50 1515 10

原创 搜索算法——双向bfs

双向bfs适用于知道起点和终点的状态下使用,从起点和终点两个方向开始进行搜索,可以非常大的提高单个bfs的搜索效率同样,实现也是通过队列的方式,可以设置两个队列,一个队列保存从起点开始搜索的状态,另一个队列用来保存从终点开始搜索的状态,如果某一个状态下出现相交的情况,那么就出现了答案例题1:走迷宫 问题描述:一个迷宫由RRR行CCC列格子组成,有的格子里有障碍物,不能走;有的格子是空地...

2019-05-12 23:38:00 15050 10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除