UVa 11235 频繁出现的数值】的更多相关文章

题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2176 RMQ,就是范围最小值的缩写,这个算法是Tarjan 的 Sparse-Table 算法,复杂度为O(n*log(n)). 就是用数组d[i][j]表示范围[i,i+2^j-1]中的最小值. 然后有递推式 d[i][j] = min(d[i][j-1],d[i+2^(j-1…
https://vjudge.net/problem/UVA-11235 题意: 给出一个非降序排列的整数数组a1,a2,...,an,你的任务是对于一系列询问(i,j),回答ai,ai+1,...aj中出现次数最多的值所出现的次数. 思路: 首先对整个数组进行游程编码,比如(-1,1,1,2,2,2,4)就可以编码成(-1,1),(1,2),(2,3),(4,1),其中(a,b)表示有b个连续的a. 用count[i]表示第i段的出现次数,num[p]表示第p个数所在的段,left[i],ri…
vjudge 上题目链接:UVA 11235 *******************************************************大白书上解释************************************************************ 题目大意:给出一个非降序排列的整数数组 a1,a2,a3,...,an,你的任务是对于一系列询问 (i, j),回答 ai,ai+1,...,aj 中出现次数最多的值所出现的次数. 输入格式:包含多组数据.每组…
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23846 题目大意:给定一个升序序列,有q次询问,每次询问(L,R)出现最多的值的次数. 解题思路: 非常麻烦的题目.尽管一眼就能看出来是个RMQ. 关键在于如何转化为RMQ. 首先对序列进行游程编码,压缩成pos段. 编码的同时用num[i]记录当前点在段中编号,LB[i]记录在当前段的左边界,更新code[pos](当前段的容量) 编码之后O(n)扫一遍,用nu…
RMQ算法 简单来说,RMQ算法是给定一组数据,求取区间[l,r]内的最大或最小值. 例如一组任意数据 5 6 8 1 3 11 45 78 59 66 4,求取区间(1,8)  内的最大值.数据量小时,只需遍历一遍就可以,数据量一大时就容易时间超限,RMQ算法是一种高效算法,和线段树差不多(当没有数据的实时更新时),当然两者都需要预处理. 定义映射f(i,j)=x,即以i为起点,长度为2j 区间内的最大最小值,显而易见f(i,0)为该数本身,那么求f(i,j+1)时: 可得公式 f(i,j)=…
题目大意是给出一个非降序排列的数组,然后n个询问,每次询问一个区间内出现次数最多的数的次数. 首先要弄清楚题目的是一个非降序的数组,那么说明相等的数都会在一起,类似于11223334569这样的,那么可以将其合并,由于这种多次区间询问的题一般用 到的是线段树或者RMQ,所以就往这方面去靠,用num[i]和cont[i]表示第i段的数值和出现的次数,val[i]表示位置i所在段的编号,lef[i]和ri[i]表示位置i所在段的左右端点 位置,那么对于每次查询(l,r)区间就分成了三段,ri[l]-…
Frequent values TimeLimit:3000Ms , ... , an in non-decreasing order. In addition to that, you are given several queries consisting of indices i and j (1 ≤ i ≤ j ≤ n). For each query, determine the most frequent value among the integers ai , ... , aj.…
RMQ: 有一个不变的数组,不停的求一个区间的最小值. 使用倍增的思想优化到logN; d(i,j) 表示从 i 开始的,长度为2j的一段元素中的最小值. 那么状态转移方程: d(i,j) = min{ d(i,j-1) ,  d(i+2j-1,j-1) } 题目链接:https://vjudge.net/contest/146667#problem/B 题意:一个非降序的数组,询问(i,j)中出现次数最多的数值,所对应的出现次数是多少. 分析: 进行游戏编码,value[i] 和count[i…
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F: Frequent values You are given a sequence of n integers a1 , a2 , ... , an in non-decreasing order. In addition to that, you are given several querie…
首先讲一下RMQ算法的意思. RMQ(Range Minimum Query,RMQ)范围最小值,给出一个n个元素的数组,计算min(A[L],A[L+1],...,A[R-1],A[R]): 这里运用了dp,先构建d[i][j]表示第i位开始2^j个元素中最小的值: 转移方程d[i][j]=min(d[i][j-1],d[i+2^(j-1)][j-1]): 建议画一张图来体验一下这个的意思. 实现: void RMQ_init(int n) { ;i<=n;i++) d[i][]=s1[i];…