首先最优策略肯定是这样的:我们取出这个序列中的最大值,然后将整个序列分为左右两部分, 那么我们一定先把左右两部分合起来然后再与这个值合并 那么我们可以得出一个基于最值查询(rmq)的的算法,但是zld上次出10^6级别的题目时,卡掉了的算法 所以我们想一个优秀一点的做法,发现这个过程可以简单的用一个... ...
分类:
其他好文 时间:
2016-07-31 22:04:11
阅读次数:
174
算法实现: 初始化:用dp实现初始化。a[]为原始数据数组f,[i][j]表示从i向后的2j个数字中的最值。显然f[i][0]=a[i]; 我们将f[i][j]分为两段,一段为a[i]~a[2j-1]的最值即f[i][j-1],一段为a[i+2j-1]~a[i+2j]即f[i+1<<(j-1)][j ...
分类:
编程语言 时间:
2016-07-29 22:51:35
阅读次数:
222
又是一个线段树的应用,不过跟上一题(D-排兵布阵)不同的是,这次是求某段区间上的最值,而不是某段区间和。当然,数据更新是必须的。D题注释已经很详细了,所以这题注释少点。 大致题意:给你N个已经排好的学生成绩,然后有M条指令,输出对应指令的结果。指令有两种: 1.Q i j:询问i到j的最值 2.U ...
分类:
其他好文 时间:
2016-07-23 18:22:23
阅读次数:
174
最近一两个月里,苹果的世界里出现了很多新东西,比如屏幕更大的iPhone 6,可穿戴设备Apple Watch,iOS8,以及旨在帮助用户更好的发现应用的App Store改版等等。 说到App Store的改版,最值得设计师、开发者和市场人员关注的大概就是视频预览功能了。官方将其称为“应用预览(A ...
分类:
移动开发 时间:
2016-07-23 12:06:55
阅读次数:
403
Error Curves Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 4928 Accepted Submission(s): 1867 Pr ...
分类:
其他好文 时间:
2016-07-15 17:11:06
阅读次数:
225
转自: http://blog.csdn.net/acdreamers/article/details/9989197 首先来说说三分的概念: 二分是把区间分为长度相等的两段,三分则是把区间分为长度相等的三段,进行查找,这样的查找称为三分查找,三分查找通 常用来迅速确定最值。 众所周知,二分算法的要 ...
分类:
其他好文 时间:
2016-07-15 17:08:07
阅读次数:
175
1. 已知一个一维数组nums,求nums的一个连续区间,使其和最大。返回最大和。(O(n)) hdu1005 2. 已知一个一维数组nums,求nums的一个最长连续区间,使其和为k。返回最大区间长度。(O(n)) 3. 已知一个一维数组nums,求nums的一个连续区间,使其和是不超过k的最大值 ...
分类:
其他好文 时间:
2016-07-14 19:27:12
阅读次数:
166
这个RMQ算法是专门针对于求最值的高效算法。其思路比较简单,先是利用DP预处理,之后便是查询,方法如下: 假如我们需要查询的区间为(i,j),那么我们需要找到覆盖这个闭区间(左边界取i,右边界取j)的最小幂(可以重复,比如查询5,6,7,8,9,我们可以查询5678和6789)。 因为这个区间的长度 ...
分类:
编程语言 时间:
2016-07-14 01:27:54
阅读次数:
138
RMQ (Range Minimum/Maximum Query)算法 1. 概述 RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值。这 ...
分类:
编程语言 时间:
2016-07-13 22:36:17
阅读次数:
195
RMQ算法适合求解对一个数组多次查询给定范围内的最值。 预处理操作: 令d[i,j]表示从i开始,长度为2^j的一段元素的最值,可以用递推公式写出d[i,j] = min{ d[i][j-1], d[ i+2^(j-1) ][j-1] } 原理如图所示: 复杂度:因为2^j<=n, 所以d数组的元素 ...
分类:
编程语言 时间:
2016-07-12 21:00:09
阅读次数:
194