uva 11235
数据结构 RMQ算法 左右左右 写得有点晕了 。。。。。
- /*************************************************************************
- > Author: xlc2845 > Mail: xlc2845@gmail.com
- > Created Time: 2013年11月07日 星期四 11时05分22秒
- ************************************************************************/
- #include <cstdio>
- //#include <iostream>
- #include <cstring>
- #include <algorithm>
- #include <queue>
- #define LL long long
- #define maxn 100010
- using namespace std;
- int val[maxn], cou[maxn], n, q, num[maxn], left[maxn], right[maxn], d[maxn][100];
- void init()
- {
- memset(val, 0, sizeof(val));
- memset(cou, 0, sizeof(cou));
- memset(d, 0, sizeof(d));
- }
- void init_RMQ(int k)
- {
- for(int i = 0; i < k; i++)
- d[i][0] = cou[i];
- for(int j = 1; (1 << j) <= n; j++)
- for(int i = 0; i+(1 << j) - 1 < n; i++)
- d[i][j] = max(d[i][j-1], d[i+(1 << (j-1))][j-1]);
- }
- int RMQ(int L, int R)
- {
- if(L > R)
- return 0;
- int k = 0;
- while((1 << (k+1)) <= R-L+1) k++;
- return max(d[L][k], d[R-(1 << k)+1][k]);
- }
- int main()
- {
- while(scanf("%d", &n) == 1 && n)
- {
- init();
- scanf("%d",&q);
- int j = 1, x;
- scanf("%d", &x);
- left[j] = 1;
- num[1] = j;
- val[1] = x;
- cou[1] = 1;
- for(int i = 2; i <= n; i++)
- {
- scanf("%d", &x);
- if(x == val[j])
- {
- num[i] = j;
- cou[j]++;
- }
- else
- {
- right[j] = i-1;
- j++;
- val[j] = x;
- num[i] = j;
- cou[j] ++;
- left[j] = i;
- }
- }
- right[j] = n;
- init_RMQ(j);
- while(q--)
- {
- int rr,ll;
- scanf("%d%d", &ll, &rr);
- int R = num[rr], L = num[ll];
- if(R == L) printf("%d\n", rr-ll+1);
- else
- {
- int ans = right[L]-ll+1;
- ans = max(rr-left[R]+1, ans);
- ans = max(ans, RMQ(L+1, R-1));
- printf("%d\n",ans);
- }
- }
- }
- return 0;
- }
uva 11235的更多相关文章
- UVA 11235 (游程编码+ST算法)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23846 题目大意:给定一个升序序列,有q次询问,每次询问(L,R) ...
- UVA 11235 Frequent values 线段树/RMQ
vjudge 上题目链接:UVA 11235 *******************************************************大白书上解释**************** ...
- RMQ算法 以及UVA 11235 Frequent Values(RMQ)
RMQ算法 简单来说,RMQ算法是给定一组数据,求取区间[l,r]内的最大或最小值. 例如一组任意数据 5 6 8 1 3 11 45 78 59 66 4,求取区间(1,8) 内的最大值.数据量小 ...
- UVA 11235 频繁出现的数值 RMQ
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVA - 11235 Frequent values
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F ...
- UVa 11235 RMQ
首先讲一下RMQ算法的意思. RMQ(Range Minimum Query,RMQ)范围最小值,给出一个n个元素的数组,计算min(A[L],A[L+1],...,A[R-1],A[R]): 这里运 ...
- UVA 11235 Frequent Values ---RMQ
大白书上的例题,具体讲解见大白书,最好用用一个Log数组直接求k,这样就是纯O(1)了 #include <iostream> #include <cstdio> #inclu ...
- UVa 11235 (RMQ) Frequent values
范围最值问题,O(nlogn)的预处理,O(1)的查询. 这个题就是先对这些数列进行游程编码,重复的元素只记录下重复的次数. 对于所查询的[L, R]如果它完全覆盖了某些连续的重复片段,那么查询的就是 ...
- [POJ] 3368 / [UVA] 11235 - Frequent values [ST算法]
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F ...
随机推荐
- C#.NET实现Word或Excel文件转为HTML文件
Word文件转html,返回相对路径 private string GetPathByDocToHTML(string strFile) { if (string.IsNullOrEmpty(strF ...
- Codevs 1003 电话连线
时间限制: 1 s 空间限制: 128000 K 题目等级 : 黄金 Gold 题目描述 Description 一个国家有n个城市.若干个城市之间有电话线连接,现在要增加m条电话线(电话线当 ...
- CentOS学习笔记--程序管理
程序管理 一个程序被加载到内存当中运行,那么在内存内的那个数据就被称为程序(process).程序是操作系统上非常重要的概念, 所有系统上面跑的数据都会以程序的型态存在.那么系统的程序有哪些状态?不同 ...
- JavaScript 同源策略
在JavaScript安全性限制Same-Origin Policy(同源策略)=>JavaScript只能访问与包含它的文档在同一域下的内容. 同源=>域名+协议+端口相同.
- FastDFS4 + Ubuntu12安装及部署
1. 安装libevent 如果需要使用http进行下载,需要安装这个组件. 2. 安装fastdfs 3. 配置fastdfs 4. 安装nginx 问题4.1:安装nginx启动后访问原先资源UR ...
- Hbase 0.95.2介绍及下载地址
HBase是一个分布式的.面向列的开源数据库,该技术来源于Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件系统(File System) ...
- jQuery WIN 7透明弹出层效果
jQuery WIN 7透明弹出层效果,点击可以弹出一个透明层的jquery特效,插件可以调弹出框的宽度和高度,很不错的一个弹出层插件. 适用浏览器:IE8.360.FireFox.Chrome.Sa ...
- 卸载CentOS 5.4自带的OpenJDK,配置新的Java环境
本文CentOS版本为5.4 final,使用图形界面与命令结合的操作方式,由于CentOS 5.4在默认情况下,会安装OpenOffice之类的软件,而这些软件需要Java支持,因此系统会默认安装一 ...
- webstorm 10.0.4 注册码
激活码: UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA INauvJ ...
- 你必须知道的.NET
作者博客地址:http://www.cnblogs.com/anytao/archive/2008/04/09/anytao_insidenet_center.html 第1章 OO大智慧 1.1对象 ...