博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 11235 - Frequent values RMQ的应用
阅读量:5022 次
发布时间:2019-06-12

本文共 778 字,大约阅读时间需要 2 分钟。

题意:

  给出一个非降序排列的整数数组a[1], a[2], ...... , a[n],给出一系列询问(i, j),回答a[i], a[i+1], ...... , a[j]中出现最多的值所出现的次数。

分析:

  将数组游程编码,value[i]和cnt[i]分别表示第i段的数值和出现次数,num[p], left[p], right[p]分别表示位置p所在段的编号和左右端点的位置。则查询(L, R)的结果为以下三部分的最大值:从L到L所在段的结束的个数(right[L]-L+1),从R所在段的开始到R处的个数(R-left[R]+1),中间从num[L]+1到num[R]-1段的count的最大值。如果L和R在同一段,则答案就是R-L+1。

代码:

  

#include 
#include
#include
#include
using namespace std;int dp[100010][30], value[100010], cnt[100010], num[100010], left[100010], right[100010];int RMQ(int l, int r){ if(r < l)return 0; //注意R < L的情况,因为这个调试了很久。。。 int k = log(1.0 * r-l+1) / log(2.0); return max(dp[l][k], dp[r-(1<

 

 

转载于:https://www.cnblogs.com/wolfred7464/archive/2013/05/31/3111341.html

你可能感兴趣的文章
LeetCode--Remove Duplicates from Sorted List
查看>>
(15)JavaScrip 的一些简单笔记
查看>>
右左法则解决复杂声明
查看>>
Jenkins的新建job和配置job
查看>>
三大类加载器 经典例子
查看>>
nohub命令
查看>>
光照问题之常见算法比较(附Python代码)
查看>>
【转】android颜色对应的xml配置值
查看>>
Java加密解密相关
查看>>
LeetCode & Q88-Merge Sorted Array-Easy
查看>>
这个2012不寻常
查看>>
web基础1
查看>>
接口测试框架1
查看>>
primefaces p:tableData 显示 List<List>
查看>>
css如何引入外部字体?
查看>>
ARGB_8888
查看>>
quickSort by javascript
查看>>
判断手机旋转代码 屏幕旋转的事件和样式
查看>>
hdu1071算面积问题
查看>>
把一列多行数据合并成一条数据
查看>>