题目背景 滚粗了的HansBug在收拾旧英语书,然而他发现了什么奇妙的东西。 题目描述 udp2.T3如果遇到相同的字符串,输出后面的 蒟蒻HansBug在一本英语书里面找到了一个单词表,包含N个单词(每个单词内包含大小写字母)。现在他想要找出某一段连续的单词内字典序最大的单词。 输入输出格式 输入 ...
分类:
其他好文 时间:
2017-11-21 23:43:48
阅读次数:
155
NYOJ 119 士兵杀敌(三) RMQ ST [题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=119][e97c1030] 思路: ST在线 预处理O(nlogn) 查询O(1) 运行时间:828ms 代码: c++ include i ...
分类:
其他好文 时间:
2017-11-20 19:08:48
阅读次数:
154
http://acm.hdu.edu.cn/showproblem.php?pid=2459 之前hihocoder那题可以算出最多重复次数,但是没有输出子串。一开始以为只要基于那个,每次更新答案的时候按SA更新子串起始位置和长度就好了,但实际发现那个解法在计算重复次数的时候并不会遍历每一个合法串( ...
分类:
其他好文 时间:
2017-11-13 11:25:06
阅读次数:
144
解决RMQ(Range Minimum/Maximum Query)即区间最大最小值问题。 有一个离线算法(ST算法),这个算法是很高效了,时间是O(nlogn):(用O(nlogn)的时间进行预处理,再用O(1)的时间进行区间查询) 1.先是预处理(用动态规划解决) A数列为:3 2 4 5 6 ...
分类:
其他好文 时间:
2017-11-09 22:49:53
阅读次数:
429
以前都是用的BIT或者线段树(前者多一些)。 对于ST(Sparse Table),在求倍增or公共祖先时见过,说明还有其他用处,所以还是学习一下。 首先是预处理,用动态规划(DP)解决。 设A[i]是要求区间最值的数列,F[i, j]表示从第i个数起连续2^j个数中的最大值。(DP的状态) 例如: ...
分类:
编程语言 时间:
2017-11-05 11:29:01
阅读次数:
224
题面: P2880 [USACO07JAN]平衡的阵容Balanced Lineup RMQ问题:给定一个长度为N的区间,M个询问,每次询问Li到Ri这段区间元素的最大值/最小值。 RMQ的高级写法一般有两种,即为线段树(并不很会╥﹏╥...)和ST表(一种利用dp求解区间最值的倍增算法) 定义:m ...
分类:
其他好文 时间:
2017-11-04 20:38:09
阅读次数:
171
啊还有十天不到就要noip提高组了,还是觉得好慌张,周围一大堆大佬,唔菜鸡还是背背模板吧。 每天一个部分好啦。 第一部分:数论+线段树+树状数组+rmq+最短路+最小生成树(是不是觉得非常的繁杂哈哈哈我就喜欢先上一大堆最主要的) 快速幂 用途:用来计算a^b mod n的值,且复杂度为log级 假设 ...
分类:
其他好文 时间:
2017-11-03 23:48:45
阅读次数:
214
题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入输出格式 输入格式: 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来N-1行每行包含两个正整数x、y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树)。 接下来M行 ...
分类:
其他好文 时间:
2017-11-03 18:58:28
阅读次数:
145
1.前言 范围最小/大值问题(Range Minimum/Maximum Query)也就是我们常说的RMQ。意思就是求出一个长度为n的数组A(A1,A2,……,An),求出一个范围(AL,AR)中的最小/大值。 2.思考 对于求范围最小值,我们可以用一个For循环来求: 如果数据变态的话(多次询问 ...
分类:
编程语言 时间:
2017-10-25 00:38:24
阅读次数:
328
题目 这个题的算法核心就是求出以i,j为左上角,边长为n的矩阵中最小值和最大值。最小和最大值的求法类似。 单调队列做法: 以最小值为例: q1[i][j]表示第i行上,从j列开始的n列的最小值。$q1[i][j]=min(x[i][j],x[i][j+1],...,x[i][j+n-1])$$q1[ ...
分类:
其他好文 时间:
2017-10-19 19:40:11
阅读次数:
228