随笔分类 - 模板
摘要:转载自http://blog.csdn.net/clove_unique/article/details/54884437 定义 f(u,v)表示u->v这条边的实际流量 b(u,v)表示u->v这条边的流量下界 c(u,v)表示u->v这条边的流量上界 在一个无源汇的普通网络流图中,满足 0≤f(
阅读全文
摘要:ZJOI2010 数字统计 上题题意为求[l,r]区间中每个数字(0~9)出现的次数 一般的做法为将区间当成[0,r]-[0,l-1],然后进行数位DP 但事实上将区间当成[0,r]-[0,l-1]后可以有另一种方法求出[0,x]中k出现的次数 具体做法: 我们对于每一位,求出k在这一位的数中有多少
阅读全文
摘要:何为支配树? 定义: 支配点:在一张图中起点为s,如果有一个点t,使得删去t后没有s到w的路径(不包含w本身),则称t为w的支配点 最近支配点:记最近支配点为idom(w),下文简称iw。它是所有w的支配点中离w最近的(dfn值最大的,在dfs树中为w的祖先) 半支配点:存在一条t到w的路径,使得路
阅读全文
摘要:基本思想 把要求的点对保存下来,在dfs时顺带求出来。 方法 将每个已经遍历的点指向它回溯的最高节点(遍历它的子树时指向自己),每遍历到一个点就处理它存在的询问如果另一个点已经遍历,则lca就是另一个点指向的点。否则跳过 例如在下图中询问4,5和4,3的lca,遍历顺序为1,2,4,5,3 遍历到4
阅读全文
摘要:ural1018. Binary Apple Tree 题目大意 有一棵n个节点的树,树上每个节点有一个值,选择m个节点使这些节点值的和最大 要求:如果选当前节点,则必须选它的父节点 解法: 我们设dp[i][j]为以i为根的树上留j个节点的最大值,转移方法如下 复杂度O(n*m^2) “金明的预算
阅读全文
摘要:主要思想: 对一棵树进行重链和轻边的划分,并用数据结构对重链进行维护,达到在树上快速维护和查询的目的。 剖分方法: 定义: 重儿子:一个节点的儿子子树中节点最多的儿子为重儿子(只有一个,相等就任取其一) 重边:父节点与重儿子连的边 轻边:除重边外的树边 重链:连续的重边连成的链 然后就有一个性质:
阅读全文
摘要:RMQ(Range Minimum/Maximum Query)问题,即区间最值查询问题,ST表可以在O(nlog(n))的预处理下将查询做到O(1) 1.预处理出f[i][j]——从i到i+(1<<j)-1这个区间中的最值 2.对于每个查询区间[l,r]找到一个k使[l,l+(1<<k)-1]和[
阅读全文
摘要:转载自http://www.cnblogs.com/shadowland/p/5872257.html 一.算法简介 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强
阅读全文
摘要:推理: 假如当前计算的是x在%p意义下的逆元,设$p=kx+y$,则 $\Large kx+y\equiv 0(mod\ p)$ 两边同时乘上$x^{-1}y^{-1}$(这里代表逆元) 则方程变为$\Large k*y^{-1}+x^{-1}\equiv 0(mod\ p)$ 化简得$\Large
阅读全文
摘要:中国剩余定理 给出以下的一元线性同余方程组: $\Large(s):\left\{\begin{aligned}x\equiv a_1\ (mod\ m_1)\\x\equiv a_2\ (mod\ m_2)\\\vdots\ \ \ \ \ \ \ \ \ \ \ \ \\x\equiv a_n\
阅读全文
摘要:kmp算法是一种效率非常高的字符串匹配算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,所以简称KMP算法 算法思想 在一个字符串中查找另一个字符串时,会遇到如下图的情况 我们通常的做法是从第一个串A的下一位B再逐位比较,但这样的做法非常低效。仔细思考一下发现,第一个串已经匹配的
阅读全文
摘要:原理 我们取矩阵A 则 F1=F2=1;则可以轻易求出F(i)
阅读全文
摘要:核心思想: 利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的 举个例子 上图是由 am as tea too tooth two 构成的字典树。每个节点代表的单词是从根遍历到他的路径,标黄的是当前节点存在单词 代码实现: 基本性质: 查询和插入 对于一个单词,我只要按照它的每个字母从根走
阅读全文
摘要:所谓单调,就是容器中的数据是递增或递减的。 单调队列 单调队列中数据要么是递增的,要么是递减的。 对于递减的单调队列,每次队尾加入一个数据,就把前面比它大的数从队尾弹出,然后再将本数据加入队列。 比如对于队列1,3,4,6,9,如果插入5, 就先比较5,9因为9>5,则9弹出队列, 再比较6,5,6
阅读全文
摘要:如图所示为一颗二叉搜索树,二叉搜索树是具有下列性质的二叉树或空树: 1. 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2. 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3. 任意节点的左、右子树也分别为二叉查找树。 4. 没有键值相等的节点。 补充
阅读全文
摘要:高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。 在讲算法前先介绍些概念 矩阵的初等变换 矩阵的初等变换又分为矩阵的初等行变换和矩阵的初等列变换。矩阵的初等行变换和初等列变换统称为初等变换。另外:分块矩阵也可以定义初等变换。 等价 定义:如果B
阅读全文
摘要:扩展欧几里德算法是用来在已知不完全为0的非负整数a, b情况下求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d 证明: a*x1+b*y1=gcd(a, b); b*x2+(a%b)*y2=gcd(b, a%b); 因为由欧几里德定理知:gcd(a, b)==gcd(b
阅读全文
摘要:简介 基数排序和桶排序有些像,都不需要比较数据大小,而其他排序算法要。 基数排序分为以下两类 一.最高位优先(Most Significant Digit first)法,简称MSD法: 先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分
阅读全文
摘要:快速排序 该方法的基本思想是: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数 快速选择 该算法主要解决的问题: 有一个大小为 n的数组A[0,1,2,…,n-1],求其中第/前k
阅读全文

浙公网安备 33010602011771号