随笔分类 -  算法碎片

摘要:记忆 两个for用来寻找LCS,DP是二维的,每一维代表了字符串的长度。 寻找的代码部分 如果相等左上+1否则左边上面取最大值 输出路径的时候从最右下开始如果左边相等左移右边相等右移,否则大于左上左上移动记录此时的字符,并且要倒叙输出 完整板子(输出两个字符串的LCS个数以及LCS) include 阅读全文
posted @ 2019-01-13 21:56 baccano! 阅读(448) 评论(1) 推荐(0)
摘要:简介 自己从大数加法改过来的模板,低速计算n的t次幂,n,t小于等于100速度能够保证 模板 include using namespace std; string cal(string a,int cs) { string jk=a; string jc=a; reverse(a.begin(), 阅读全文
posted @ 2018-12-20 20:27 baccano! 阅读(928) 评论(0) 推荐(0)
摘要:最近才知道还有二分查找的算法 二分搜索 这个没什么好说的,就是有序数列找一个值就可以了,代码也十分的简单 代码(数组中找一个数找到输出1,找不到输出 1) include using namespace std; int num[50005]; int main() { ios::sync_with 阅读全文
posted @ 2018-12-13 20:10 baccano! 阅读(589) 评论(0) 推荐(0)
摘要:什么是强连通分量? 百度百科 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子 阅读全文
posted @ 2018-12-03 20:50 baccano! 阅读(364) 评论(0) 推荐(0)
摘要:什么是差分约束系统? 百度百科 如果一个系统由n个变量和m个约束条件组成,形成m个形如ai aj≤k的不等式(i,j∈[1,n],k为常数),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系统是求解关于一组变量的特殊不等式组的方法。 具体怎么 阅读全文
posted @ 2018-11-28 16:27 baccano! 阅读(365) 评论(0) 推荐(0)
摘要:什么是单调队列? 百度百科 单调队列,即单调递减或单调递增的队列。 单调队列能干什么? 实现快速寻找区间的最大值与最小值 如何实现单调队列?(这里使用了STL的deque) ①建立结构体 因为我们之后要判断队首的元素是不是已经超出了滚动窗口,所以得把每个值记录他原来的位置 ②判断原来的队首是不是还在 阅读全文
posted @ 2018-11-21 20:10 baccano! 阅读(286) 评论(0) 推荐(0)
摘要:什么是AC自动机? 百度百科 Aho Corasick automaton,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法。 要学会AC自动机,我们必须知道什么是Trie,也就是字典树。Trie树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符 阅读全文
posted @ 2018-11-20 17:26 baccano! 阅读(182) 评论(0) 推荐(0)
摘要:什么是trie? 百度百科 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 t 阅读全文
posted @ 2018-11-19 19:47 baccano! 阅读(585) 评论(0) 推荐(0)
摘要:什么是pb_ds? 除了众所周知的STL库,c++还自带了ext库(应该可以这么叫吧),其中有用pb_ds命名的名称空间(俗称平板电视)。这个名称空间下有四个数据类型结构。这些都是鲜为人知的。经过测试目前所有的OJ都支持pb_ds库,OI据说也支持。网上资料显示只要是稍微高级一点的linux判卷机都 阅读全文
posted @ 2018-11-16 15:39 baccano! 阅读(1052) 评论(1) 推荐(0)
摘要:应用二分查找的条件必须是数组有序! 其中二分查找函数有三个binary_serch,upper_bound,lower_bound 测试数组 binary_serch 没有什么好说的,这个很简单,接受三个参数first,last,key三个值。如果在数组中查询到的话,那么就返回1否则返回0 代码 b 阅读全文
posted @ 2018-11-14 20:50 baccano! 阅读(341) 评论(0) 推荐(0)
摘要:LIS问题 什么是LIS? 百度百科 最长上升子序列(Longest Increasing Subsequence,LIS),在计算机科学上是指一个序列中最长的单调递增的子序列。 怎么求LIS? O(n^2)做法 具体做法是用两个for,状态转移方程为f[i]=max(f[i],f[j]+1)其中f 阅读全文
posted @ 2018-11-14 20:08 baccano! 阅读(381) 评论(0) 推荐(0)
摘要:什么是Manacher算法? 转载自百度百科 Manachar算法主要是处理字符串中关于回文串的问题的,它可以在 O(n) 的时间处理出以字符串中每一个字符为中心的回文串半径,由于将原字符串处理成两倍长度的新串,在每两个字符之间加入一个特定的特殊字符,因此原本长度为偶数的回文串就成了以中间特殊字符为 阅读全文
posted @ 2018-11-13 19:05 baccano! 阅读(455) 评论(0) 推荐(0)
摘要:什么是KMP KMP俗称看毛片算法,是高效寻找匹配字串的一个算法 百度百科 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模 阅读全文
posted @ 2018-11-12 10:53 baccano! 阅读(339) 评论(6) 推荐(0)
摘要:什么是差分数组? 定义 对于已知有n个元素的离线数列d,我们可以建立记录它每项与前一项差值的差分数组f:显然,f[1]=d[1] 0=d[1];对于整数i∈[2,n],我们让f[i]=d[i] d[i 1] 简单性质 原数组的第i项为差分数组的前i项和 基本应用 快速更改区间各各数的值,如果对原数组 阅读全文
posted @ 2018-11-08 17:13 baccano! 阅读(573) 评论(0) 推荐(1)
摘要:什么是树状数组? 百度原文 ·树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是 阅读全文
posted @ 2018-11-08 15:57 baccano! 阅读(255) 评论(0) 推荐(0)
摘要:Kruskal算法 伪代码 sort间接排序r[i]数组,找出权值最小的边 进行判断如果不是在一块的,那么答案加上权值两条边合并 模板 include using namespace std; int f[200010],r[200010]; int num[200010],to[200010],c 阅读全文
posted @ 2018-11-06 12:17 baccano! 阅读(102) 评论(0) 推荐(0)
摘要:增量构造法 代码 阅读全文
posted @ 2018-11-06 11:02 baccano! 阅读(110) 评论(0) 推荐(0)
摘要:编写find函数 find函数赋值初值 合并操作为f[find(t2)]=find(t3),查找操作为if(find(p2)==find(p3)) 代码 include using namespace std; int f[10010]; int find(int k) { if(f[k]==k) 阅读全文
posted @ 2018-11-05 15:58 baccano! 阅读(107) 评论(0) 推荐(0)
摘要:``` include using namespace std; int main() { int n,a,ans=1 n; while(n ) { cin a; now+=a; if(now ans) ans=now; if(now 阅读全文
posted @ 2018-11-04 11:19 baccano! 阅读(120) 评论(0) 推荐(0)
摘要:注意!!!下面的模板有的并没有去设定具体的无法到达的极限值,也没有考虑极限相加爆表的情况,如果可以的话,最好还是把dis数组定义成long long Floyd算法(仅仅四行的算法) Floyd算法仅仅四行就能解决问题但是时间复杂度达到了感人的O(n^3),唯一的有点是能够输出任意两点之间的最小路径 阅读全文
posted @ 2018-11-01 14:22 baccano! 阅读(2217) 评论(0) 推荐(0)