设为首页 加入收藏

TOP

uva 11235 - Frequent values(RMQ)
2015-07-20 17:50:05 来源: 作者: 【 】 浏览:15
Tags:uva 11235 Frequent values RMQ

题目链接:uva 11235 - Frequent values

题目大意:给定一个非降序的整数数组,要求计算对于一些询问(i,j),回答ai,ai+1,…,aj中出现最多的数出现的次数。

解题思路:因为序列为非降序的,所以相同的数字肯定是靠在一起的,所以用o(n)的方法处理处每段相同数字的区间。然后对于每次询问:

  • num[i]=num[j]:j?i+1
  • numi≠numj:max(RMQ(righti+1,reftj?1),max(righti?i+1,j?leftj+1))
    #include 
         
           #include 
          
            #include 
           
             using namespace std; const int maxn = 1e5+5; int N, Q, num[maxn], rmq[maxn][20]; int left[maxn], right[maxn]; void RMQ_init () { memset(rmq, 0, sizeof(rmq)); for (int i = 1; i <= N; i++) rmq[i][0] = right[i] - left[i] + 1; for (int j = 1; (1<
            
             = 1; i--) { if (num[i] == num[i+1]) right[i] = right[i+1]; else right[i] = i; } RMQ_init(); } int RMQ (int L, int R) { if (L > R) return 0; int k = 0; while (1<<(k+1) <= R-L+1) k++; return max(rmq[L][k], rmq[R-(1<
             
            
           
          
         
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU-4937-A simple simulation pr.. 下一篇uva 1400 - "Ray, Pass me t..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)