随笔分类 - AAA模版
摘要:上图一共有5个区间,分别是[0,2]、[2,4]、[8,11]、[7,11]、[15,18]。如果要求这些区间合并后区间的大小,有两种简单的方法。 方法一:比较每两个区间的范围,如果两个区间有交集,则合并它们。最后所有区间会合并成几个离散的大区间,结果为这些区间大小之和。这种方法的时间复杂度是O(n
阅读全文
摘要:有两个区间A[a1,b1], B[a2,b2],判断这两个区间有没有交集。我们可以分为两种思维来判断: 给你两个区间[a, b]和[c, d],如果让你求出这两个区间的相交长度,你会怎么做呢? 不出意外的话,大多数同学就会进行分类讨论,看看那个区间在前,那个区间在后,分两种情况,然后对区间相交还是覆
阅读全文
摘要:https://www.cnblogs.com/njczy2010/p/3930688.html https://blog.csdn.net/dominating413421391/article/details/44203019?locationNum=1&fps=1 https://blog.c
阅读全文
摘要:最后补充一下滚动数组降维: 其实就是状态转移后前面的数组的空间不用了 ,会造成浪费,而滚动数组就是利用这部分空间 写Dp经常需要大家开高维数组,比如F[t][i][j]。有的时候转移仅需要上一维数组,如F[t 1][i][j],而F[t 2],F[t 3]都不再有用,留着占用大量空间。我们可以用滚动
阅读全文
摘要:A 求和 时间限制: 1 Sec 空间限制: 256 MB 输入输出文件名:A.in,A.out 题目描述 给出一棵以1为根的有n个节点的树,树上每条边都有其边权。 求所有点对之间的路径上的边权和的总和。 输入格式: 第一行为n 接下来n 1行,每行三个整数,分别表示一条边的两端点编号和边权。(编号
阅读全文
摘要:这里贴一下勾股数的构造: 当a为大于1的奇数2n+1时,b=2n2+2n, c=2n2+2n+1。 实际上就是把a的平方数拆成两个连续自然数,例如: n=1时(a,b,c)=(3,4,5) n=2时(a,b,c)=(5,12,13) n=3时(a,b,c)=(7,24,25) 当a为大于2的偶数2n
阅读全文
摘要:【例题】 1.POJ Drainage Ditches 【最大流EK算法模板】 include include include include include include include include include include include include include includ
阅读全文
摘要:LCA,最近公共祖先,实现有多种不同的方法,在树上的问题中有着广泛的应用,比如说树上的最短路之类。 LCA的实现方法有很多,比如RMQ、树链剖分等。 今天来讲其中实现较为简单的三种算法: RMQ+时间戳、树上倍增(类似二分步长)、Tarjan算法(DFS+并查集)。
阅读全文
摘要:【模板】洛谷P3865 include include include include include include include include include include include include include include include include include in
阅读全文
摘要:定义 给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。 极大匹配(Maximal Matching)是指在当前已完成的匹配下,无法再通过增加未完成匹配的边的方式来增加匹配的边数。最大匹配(maximum matching)是所有极大匹配当中边
阅读全文
摘要:a[i]=a[i 1]+b[i 1]+1, b[i]=2 a[i 1] 5 ; a[1]=1,b[1]=1, 问a[x]=?,b[x]=? 很简单的递推,一步步推即可,但是,如果x是10^9,如何推? 思维:递推式可以化为矩阵乘积 那么,矩阵A[i]=A[i 1] B; A[i+1]=A[i] B=
阅读全文
摘要:有一个只含0和1的长度为n的串,问不含有101的所有串的个数。 ——不存在连续的101、010、111的字符串数量 HDU:https://cn.vjudge.net/problem/HDU-3485 51nod: https://blog.csdn.net/Viscu/article/detail
阅读全文
摘要:【例题】 一、单点更新 #include<cstdio> #include<string> #include<cstdlib> #include<cmath> #include<iostream> #include<cstring> #include<set> #include<queue> #in
阅读全文
摘要:#include<cstdio> #include<string> #include<cstdlib> #include<cmath> #include<iostream> #include<cstring> #include<set> #include<queue> #include<algori
阅读全文
摘要:【简述】: kmp算法:1 kmp是用来匹配字符串,只能够匹配单一的字符串2 kmp的算法的过程: 1:假设文本串的长度为n,模式串的长度为m; 2:先例用O(m)的时间去预处理next数组,next数组的意思指的是当前的字符串匹配失败后要转到的下一个状态; 3:利用o(n)的时间去完成匹配; 3
阅读全文
摘要:1】学习了字典树之后,觉得它很明显的就是用空间来换时间,空间复杂度特别大,比如字典数单单存26个小写字母,那么每个节点的孩子节点都有26个孩子节点,字典树中的每一层都保留着不同单词的相同字母。 2】01字典树主要用于解决求异或最值的问题 #include<cstdio> #include<strin
阅读全文
摘要:算法分析:预处理时间Θ(m),即求h,p,t的时间为,匹配时间在最坏情况下为Θ((n-m-1)m),因为可能出现每次都是可能命中点的情况。如T=a^n,P=a^m,此种情况下验证时间为Θ((n-m-1)m)。当然实际中,可能的命中点一般很少。假设有c个,则算法的期望匹配时间为O(n-m+1 +cm)
阅读全文
摘要:问题描述: Rabin-Karp的预处理时间是O(m),匹配时间O( ( n - m + 1 ) m )既然与朴素算法的匹配时间一样,而且还多了一些预处理时间,那为什么我们还要学习这个算法呢?虽然Rain-Karp在最坏的情况下与朴素匹配一样,但是实际应用中往往比朴素算法快很多。而且该算法的期望匹配
阅读全文
摘要:农夫约翰在探索他的许多农场,发现了一些惊人的虫洞。虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径,W(1≤W≤200)个虫洞。FJ作为一个狂热的时间旅行的爱好者,他要做到以下几点:开始在一个区域,
阅读全文
摘要:1.正环 用 SPFA不断的进行松弛操作,发现当前金额可以比本身大就更新,同时记录更新次数。如果更新次数超过n次,说明存在”正“环。 2.负环 这里先说明下负环。(求最短距离的时候) 在我们用SPFA求最短路径的时候,如果存在负环,在松弛操作的时候总会加入队列 因为最小距离会越来越小,同样这里如果经
阅读全文