- 博客(9)
- 收藏
- 关注
转载 RMQ算法
1. 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j算法。当然,该问题也可以用线段树(也叫区间树)解决,算法复杂度为:O(N)~O(logN),这里我们暂不介绍。 2.RMQ算法 对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量
2016-10-15 14:54:25 213
原创 高级的暴力(一)——分块
在某大佬的帮助下我今天get到了分块 简单来说分块就是可以把块分成某些奇怪的大小,使之达到优秀的复杂度。but我现在只会把块分成根号大小,然后我们修改一个点的 信息时就可以顺便修改次点所在块的信息(O(1))。接着当我们查询[L,R]这段区间,的时候,对于中间的大块可以直接拿来用,对于两 边不完整的块则直接暴力查询(都是根号n,)。 差不多就这样,最后附上DCOJ 1324用分块过的代码
2016-10-14 21:37:48 460
转载 tarjan算法
说到以Tarjan命名的算法,我们经常提到的有3个,其中就包括本文所介绍的求强连通分量的Tarjan算法。而提出此算法的普林斯顿大学的Robert E Tarjan教授也是1986年的图灵奖获得者(具体原因请看本博“历届图灵奖得主”一文)。 首先明确几个概念。 强连通图。在一个强连通图中,任意两个点都通过一定路径互相连通。比如图一是一个强连通图,而图二不是。因
2016-10-08 14:37:31 239
原创 dinic算法实现
今天代码实现时,发现我昨天的理解有一个误区: 分层图是要不断建立的,而不是建一次就够了。 下面贴出我的代码(不得不说,用链式前向星存图真是方便) #include #include #include using namespace std; int m,n,ne=0; struct node { int to,next,w; }edge[233]; int head[233]; int
2016-08-22 15:07:44 614
原创 走进链式前向星的秘密
前言: 之前学长讲过一次链式前向星,然而。。。本蒟蒻听完就忘了 所以今天花一点一时间来撸一撸链式前向星 :D(二傻子般的微笑) 正文: 链式前向星的主要就是下面这几行了 void add(int u,int v,int w) { edge[cnt].w = w; edge[cnt].to = v; edge[cnt].next = head[u
2016-08-22 13:44:38 271
转载 树链剖分前传
之前勉强讲完了一个题,但还是理解的不太好 睡一觉起来看了百度百科后豁然贯通 树链剖分和线段树的区别就是它可以维护一条链,,比单纯的线段树要机智一些(2333)。 所以说科普一下百度百科还是很有必要的 方法 常见的路径剖分的方法是轻重树链剖分(启发式剖分) 将树中的边分为:轻边和重边 定义size(X)为以X为根的子树的节点个数。 令V为U的儿子节点中siz
2016-08-20 16:38:57 275
原创 树链剖分
本蒟蒻今天开始刷BZOJ 本来准备愉快的水完降序排列的一波题 。。结果。。我果然是个弱菜 题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1036 上网搜了一下,可以用树链剖分解决,正好我不会,就学了一下。 深吸一口,我要开始转述了, 树链剖分可以把树的边分为轻、重边
2016-08-20 15:24:10 328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人