问题描述给定一个n个元素的序列{A1,A2,……,An},在要求的区间Query(L,R)内找到最小值:min{AL,AL+1,……,AR}。hiho16算法描述在这里介绍最常用的Tarjan的Sparse-Table算法,它的预处理时间复杂度为O(nlogn),而查询时间只需要O(1)。令calc(i,j)表示从i开始的,长度为2j 的一段子序列的最小值,则使用循环的方式计算:calc[i][j]...
分类:
其他好文 时间:
2015-05-19 14:47:16
阅读次数:
178
概念:线段树(Segment Tree)是一种二叉搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左子树表示的区间为[a,(a+b)/2],右子树表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树。叶节点数目为N,即整个线段区间的长度。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。——摘自维基百科...
分类:
其他好文 时间:
2015-05-19 10:52:02
阅读次数:
114
#1169 : 猜数字
时间限制:10000ms
单点时限:5000ms
内存限制:256MB
描述
你正在和小冰玩一个猜数字的游戏。小冰首先生成一个长为N的整数序列A1, A2,
…, AN。在每一轮游戏中,小冰会给出一个区间范围[L, R],然后你要猜一个数K。如果K在AL,
AL+1, …, AR中,那么你获胜。
在尝试了几轮之后,...
分类:
其他好文 时间:
2015-05-18 16:46:38
阅读次数:
242
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
万圣节的晚上,小Hi和小Ho在吃过晚饭之后,来到了一个巨大的鬼屋!
鬼屋中一共有N个地点,分别编号为1..N,这N个地点之间互相有一些道路连通,两个地点之间可能有多条道路连通,但是并不存在一条两端都是同一个地点的道路。
不过这个鬼屋虽然很大,但是其中的道路并不算多,所以小Hi还是希望能...
分类:
其他好文 时间:
2015-05-15 09:11:39
阅读次数:
132
题目描述 区间修改有别于单点修改,如果每次都修改到叶子节点,复杂度可以退化到O(n)。 因此为节点引入一个lazy标记,修改时,如果待修改区间与某个节点的区间重合,那么这个节点更新值后标记lazy,不再修改其子节点。 类似于查询操作,这个修改操作的复杂度是O(logn)。 另外,查询或修改时,如果遇...
分类:
其他好文 时间:
2015-05-14 20:00:21
阅读次数:
122
问题描述 依然是RMQ问题。过程需要修改某些点的数据。 使用线段树解决。 单点修改的复杂度是O(logn),即树深,只需要修改这个点的祖先节点。 区间查询的复杂度也是O(logn),因为除了第一步可能一分为二外,其他查询若有分解则分解后必然有一个区间是不需要再分解的。#include #includ...
分类:
其他好文 时间:
2015-05-14 15:56:32
阅读次数:
96
问题描述 询问区间最小值,过程中会对某些位置的值进行修改。 这题数据量很小,使用O(NQ)的方法做。 后续会有其他高效的解法。#include int data[10005]; int main(){ int n, q; scanf("%d", &n); for (int i = 1; i <= n...
分类:
其他好文 时间:
2015-05-14 14:03:30
阅读次数:
183
Alice和Bob这一次准备玩一个关于硬币的游戏:N枚硬币排成一列,有的正面朝上,有的背面朝上,从左到右依次编号为1..N。现在两人轮流翻硬币,每次只能将一枚正面朝上的硬币翻过来,并且可以随自己的意愿,在一枚硬币翻转后决定要不要将该硬币左边的任意一枚硬币也翻一次(正面翻到背面或背面翻到正面)。翻最后...
分类:
其他好文 时间:
2015-05-13 19:02:10
阅读次数:
113
#1122 : 二分图二?二分图最大匹配之匈牙利算法
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
上一回我们已经将所有有问题的相亲情况表剔除了,那么接下来要做的就是安排相亲了。因为过年时间并不是很长,所以姑姑希望能够尽可能在一天安排比较多的相亲。由于一个人同一天只能和一个人相亲,所以要从当前的相亲情况表里选择尽可能...
分类:
编程语言 时间:
2015-05-12 15:54:22
阅读次数:
178
传送门题目1 : 博弈游戏·Nim游戏·二时间限制:10000ms单点时限:1000ms内存限制:256MB描述Alice和Bob这一次准备玩一个关于硬币的游戏:N枚硬币排成一列,有的正面朝上,有的背面朝上,从左到右依次编号为1..N。现在两人轮流翻硬币,每次只能将一枚正面朝上的硬币翻过来,并且可以...
分类:
其他好文 时间:
2015-05-11 10:33:43
阅读次数:
123