RMQ
RMQ
Joker & Liar
这个作者很懒,什么都没留下…
展开
-
HDU-3183(A Magic Lamp)
题意:给定一个整数,可以删除m个数字,求原整数删除m个数字后变成的数最小是多少。分析:设整数的长度为 n ,则删除完成之后的数的位数为 n-m,且无论如何删除完成之后的整数 的最高位肯定是原整数[0,m]区间中的一位,因为要求最小,所以第一位肯定是[0,m]区间中最小的一位,然后继续往后推就行了。代码:#include<cmath>#include<c...原创 2019-11-30 15:39:39 · 666 阅读 · 0 评论 -
HDU-2888(Check Corners)
题意:给定一个二维矩阵,然后有Q个询问,每个询问给出两个坐标,求以这两个坐标为左上角和右下角的矩阵内的最大值,并判断这个值是否是矩阵四个角的值。分析:二维RMQ裸题。代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usi...原创 2019-11-30 13:25:11 · 224 阅读 · 0 评论 -
HDU-3193(Find the hotel )
题意:给定 n 个点对 ( pi , di ) ,求出所有的点对,使得对于当前点对来说,不存在其它点对的 p,d 比这个点对的都小。按照 p 优先,d 次先从小到大输出点对。分析:先按照 p 从小到大排序,然后遍历一遍,当来到当前第 i 个点对时,因为前面的 p 肯定小于等于当前的p,那么只需要判断之前的 d 是不是大于当前的 d 就行,就可以对 d 做 RMQ。代码:...原创 2019-11-29 23:57:58 · 220 阅读 · 0 评论 -
HDU-3486(Interviewe)
题意:给定一个长度为 n 的数组 s 和一个数 k,可以把 s 按顺序分成 m 组(m未知),但每一组的元素个数都必须相同,即每一组的元素个数为 n / m (末尾多余的元素舍去),分别累加m 个组的最大值的和 sum,要求 sum>k,求出最小的 m 使得这个条件满足。分析:RMQ+暴力优化,首先对于分组数m,最大肯定是 n,那最小呢,我们先用RMQ求出整个数组的最大元素 t...原创 2019-11-29 21:58:29 · 286 阅读 · 0 评论 -
POJ-2019(Cornfields)
题意:给定一个 N xN的矩阵,有 K 个查询,每次查询给出一个坐标 P(x,y),求以 P 点为左上角,大小为 B x B 的子矩阵的最大值与最小值的差。分析:二维RMQ裸题。代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm&...原创 2019-11-29 21:02:03 · 382 阅读 · 0 评论 -
HYSBZ - 1067(降雨量)
题面:我们常常会说这样的话:“X年是自Y年以来降雨量最多的”。它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年。例如2002,2003,2004和2005年的降雨量分别为4920,5901,2832和3890,则可以说“2005年是自2003年以来最多的”,但不能说“2005年是自2002年以来最多的”由于有些年份的降雨量未知,有的说法是可能正确也可以不正确的...原创 2019-11-29 20:49:17 · 155 阅读 · 0 评论 -
POJ-3368(Frequent values)
题意:给定 n 个整数和 q 个询问,每个询问给出两个数 l 和 r,求区间 [ l , r ] 中出现次数最多的数的次数,且给定的 n 个整数以非递减状态顺序给出。分析:非递减,所以相同的数是连续的,设原数组为 str,我们开一个数组 s,对应 s[i] 的值表示 str[i] 这个数在[0,i] 一共出现了几次,则 s 数组很好求,从左到右遍历 str 数组一遍就可以了。然后我们对...原创 2019-11-21 22:18:02 · 254 阅读 · 0 评论 -
POJ 3264(Balanced Lineup)
题意:给定 n 个整数和 q 和询问,每次查询有两个数 l 和 r ,求区间[ l ,r]最大值和最小值之差。分析:RMQ裸题代码:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<functiona...原创 2019-11-21 17:05:41 · 89 阅读 · 0 评论