11235 - Frequent values
- 《算法竞赛入门经典-训练指南》P198
- 记录一下区间的左右边界就可以了
- #include <iostream>
- #include <stack>
- #include <queue>
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- #include <set>
- #include <vector>
- #include <cstring>
- #include <algorithm>
- #define INF 0x7fffffff
- #define N 100010
- #define M 1000010
- #define LL long long
- #define mod 95041567
- using namespace std;
- int arr[N];
- int num[N][3];
- int dp[N][20];
- void RMQ_init(int len){
- for(int j = 1; (1 << j) <= len; ++ j)
- for(int i = 1; i + (1 << j) - 1 < len; ++ i)
- dp[i][j] = max(dp[i][j - 1], dp[i + (1 << (j - 1))][j - 1]);
- }
- int RMQ(int L, int R){
- if(R < L) return 0;
- else if(R == L) return dp[R][0];
- int k = 0;
- while((1 << (k + 1)) <= R - L + 1) ++ k;
- return max(dp[L][k], dp[R - (1 << k) + 1][k]);
- }
- int main()
- {
- int n, q;
- // freopen("in.txt","r",stdin);
- while(scanf("%d", &n) != EOF){
- if(! n) break;
- scanf("%d", &q);
- for(int i = 0; i < n; ++ i) scanf("%d", &arr[i]);
- for(int i = 0; i <= n + 2; ++ i)
- for(int j = 0; j <= 20; ++ j)
- dp[i][j] = 0;
- arr[n] = INF;
- int p = 0;
- int len = 0;
- for(int i = 1; i <= n; ++ i)
- if(arr[i] != arr[i - 1]){
- for(int j = p; j <= i - 1; ++ j){
- num[j][0] = i - 1;
- num[j][1] = p;
- num[j][2] = len;
- }
- dp[len ++][0] = i - p;
- p = i;
- }
- RMQ_init(len);
- int L, R;
- for(int i = 0; i < q; ++ i){
- scanf("%d %d", &L, &R);
- if(arr[L - 1] == arr[R - 1]){
- printf("%d\n", R - L + 1);
- continue;
- }
- //printf("%s\n", "++");
- p = num[L - 1][0] - (L - 1) + 1;
- p = max(p, R - num[R - 1][1]);
- p = max(p, RMQ(num[L - 1][2] + 1, num[R - 1][2] - 1));
- printf("%d\n", p);
- }
- }
- return 0;
- }
11235 - Frequent values的更多相关文章
- 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 Frequent values
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F ...
- 数据结构(RMQ):UVAoj 11235 Frequent values
Frequent values You are given a sequence of n integers a1 , a2 , ... , an in non-decreasing order. I ...
- [POJ] 3368 / [UVA] 11235 - Frequent values [ST算法]
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F ...
- UVA 11235 Frequent values(RMQ)
Frequent values TimeLimit:3000Ms , ... , an in non-decreasing order. In addition to that, you are gi ...
- UVA 11235 Frequent values 线段树/RMQ
vjudge 上题目链接:UVA 11235 *******************************************************大白书上解释**************** ...
- UVA 11235 Frequent Values ---RMQ
大白书上的例题,具体讲解见大白书,最好用用一个Log数组直接求k,这样就是纯O(1)了 #include <iostream> #include <cstdio> #inclu ...
- POJ 3368 & UVA 11235 - Frequent values
题目链接:http://poj.org/problem?id=3368 RMQ应用题. 解题思路参考:http://blog.csdn.net/libin56842/article/details/4 ...
- UVa 11235 Frequent values (RMQ && 区间出现最多次的数的次数)
题意 : 给出一个长度为 n 的不降序序列,并且给出 q 个形如(L, R)的问询,问你这个区间出现的最多次的数的次数. 分析 : 很自然的想到将区间“缩小”,例如1 1 2 3 3 3就可以变成2 ...
随机推荐
- SGU 187 - Twist and whirl -- want to cheat
原题地址:http://acm.sgu.ru/problem.php?contest=0&problem=187 太开心啦!!!!这道题从2013年开始困扰我!!今天晚上第四次下定决心把它写一 ...
- BrowserSync,调试利器--自动刷新(转
---恢复内容开始--- 请想象这样一个场面:你开着两个显示器,一边是IDE里的代码,另一边是浏览器里的你正在开发的应用.此时桌上还放着你的手机,手机里也是这个开发中的应用.然后,你新写了一小段代码, ...
- hdu 4435 charge-station
// 题意 从1出发逛完N个点回到出发点 要在这N个点选择性建设加油站 车每次加满油最多可以行使D米// 然后最少要花多少钱才能达到上述要求// 注意到 第i个城市的花费是 2^(i-1) 所以 我就 ...
- String.IsNullOrEmpty 方法
参数 value:一个String引用 返回值 如果 value 参数为 空引用(在 Visual Basic 中为 Nothing) 或空字符串 (""),则为 true:否则为 ...
- Hibernate优化
前言 在一般情况下,Hibernate需要将执行转换为SQL语句从而性能低于JDBC.但是在经过比较好的性能优化之后,性能还是让人相当满意的,特别是应用二级缓存之后,甚至可以获得比较不使用缓存的JDB ...
- 【转】C++ 智能指针详解
一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 ...
- 高性能Server---Reactor模型-----Socket
高性能Server---Reactor模型 原文地址:http://www.ivaneye.com/2016/07/23/iomodel.html 无处不在的C/S架构 在这个充斥着云的时代,我们 ...
- hdu 3341(ac自动机+状态压缩)
题意:容易理解... 思路:首先一开始容易想到要用到dp,开设一个dp[41][41][41][41][501]的数组来解决,但是明显内存已经超出范围了,于是就想如何减少内存呢?只要知道A.T.C.G ...
- Nginx源码安装及调优配置
导读 由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置. Nginx编译前的优 ...
- 动态 SQL
MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...