摘要: KMP算法是一种非常高效和常用的算法。其核心就是通过预处理一个寻找公共最大前后缀的 Next[ ] 数组,减少匹配失败时的重复无效匹配。 next数组本质:next[ i ] = j 表示下标以 i - j 为起点,i为终点的后缀和下标以0为起点,j为终点的前缀相等。 复制一些别人的图片用来帮助理解 阅读全文
posted @ 2020-02-04 15:06 FLydoggie 阅读(180) 评论(0) 推荐(0)
摘要: 单调队列解答: /*******************单调队列!=优先队列单调队列是为了保证队列内的元素具有单调性,在保持了元素原本顺序的同时,对元素进行了过滤,舍弃了会影响单调性的元素而优先队列本质上还是个队列不会舍弃任何元素,每个元素都在队列之中,但是在队列中的位置由优先队列定义的优先级来确定 阅读全文
posted @ 2020-02-04 12:59 FLydoggie 阅读(295) 评论(0) 推荐(0)
摘要: #include<iostream> using namespace std; const int N = 100010; int val[N],le[N],ri[N]; int idx; int n,m; //初始化 ri[0] 和 le[1]分别为双链表的左右端点 void init(){ ri 阅读全文
posted @ 2020-01-31 00:44 FLydoggie 阅读(402) 评论(0) 推荐(0)
摘要: #include<iostream> using namespace std; const int N = 100010; int value[N],ne[N]; int head,idx; //初始化链表 void init(){ head = -1; idx = 0; } //删除第K个数后面的 阅读全文
posted @ 2020-01-30 23:57 FLydoggie 阅读(155) 评论(0) 推荐(0)
摘要: 区间合并就是将坐标轴中两个存在交集的区间合并成一个区间。 代码: #include<bits/stdc++.h> using namespace std; const int N = 1000010; typedef pair<int,int> PII; //用来存放区间的左右端点 vector<P 阅读全文
posted @ 2020-01-30 22:51 FLydoggie 阅读(969) 评论(0) 推荐(0)
摘要: 百度百科解释: 离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。 通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。例如: 原数据:1,999,100000,15;处理后:1,3,4,2; 原数据:{100,200},{20,50000},{1,400 阅读全文
posted @ 2020-01-30 01:23 FLydoggie 阅读(675) 评论(0) 推荐(0)
摘要: 双指针算法本质上就是将具有单调性的算法复杂度为O(N^2)的朴素算法通过双指针优化到O(n)的一种优化方法。是一种十分常用的算法。 设计双指针算法我们一般先写出它的朴素算法,然后按照模板: for( int i = 0, j = 0 ; i < n ; i ++) { //check()是按照题目逻 阅读全文
posted @ 2020-01-29 17:54 FLydoggie 阅读(239) 评论(0) 推荐(0)
摘要: 1.大整数加法 用数组来存储大整数的每一位,然后模拟人工运算,用for循环按位运算和处理,原理十分简单,直接上模板。 #include<iostream> #include<vector> using namespace std; //大整数加法 vector<int> add(vector<int 阅读全文
posted @ 2020-01-27 07:14 FLydoggie 阅读(851) 评论(0) 推荐(0)
摘要: 浮点数二分不需要考虑太多的边界问题,只需要保证精度满足题目的要求即可,通常在acm中,假如题目精度要求保留n位小数,我们正常设置与标准答案的误差为10的负n+2次方就行。 例题: c++代码: #include<bits/stdc++.h> using namespace std; int main 阅读全文
posted @ 2020-01-27 06:35 FLydoggie 阅读(280) 评论(0) 推荐(0)
摘要: 目前尚没有很彻底的理解,所以先将大佬的模板和思路拷贝下来,待理解透彻后再上自己的理解。 二分模板一共有两个,分别适用于不同情况。 算法思路:假设目标值在闭区间[l, r]中, 每次将区间长度缩小一半,当l = r时,我们就找到了目标值。 版本1当我们将区间[l, r]划分成[l, mid]和[mid 阅读全文
posted @ 2020-01-27 05:14 FLydoggie 阅读(304) 评论(0) 推荐(0)