//使用rmq办,ma[i][j],同i作为一个起点2^j阵列的最大长度值

//启动枚举问最长的子列

//枚举的最大长度2^(j-1)和2^(j)z之间

//然后在该范围内找到

#include<iostream>

#include<cstdio>

#include<cstring>

#include<cmath>

using namespace std;

const int maxn=100010;





int a[maxn],ma[maxn][25],mi[maxn][25];

int n,m,k;

void rmq()

{

    for(int i=1;i<=n;i++)

    ma[i][0]=mi[i][0]=a[i];

    for(int j=1;j<=log((double)(n))/log(2.0);j++)

       for(int i=1;i+(1<<j)-1<=n;i++)

       {

           ma[i][j]=max(ma[i][j-1],ma[i+(1<<(j-1))][j-1]);

           mi[i][j]=min(mi[i][j-1],mi[i+(1<<(j-1))][j-1]);

       }

}





int query(int a,int b)

{

    int k=(int)(log((double)(b-a+1))/log(2.0));

    return max(ma[a][k],ma[b-(1<<(k))+1][k])-min(mi[a][k],mi[b-(1<<(k))+1][k]);

}





int Maxlen(int st,int pos)

{

   int j;

   for(j=0;(pos+(1<<j))<=n;j++)

   {

       int tmp=query(st,pos+(1<<j));

       if(tmp>k)

       {

           if(j==0)

           return pos;

           return Maxlen(st,pos+(1<<(j-1)));

       }

   }

   if((pos+(1<<(j-1))==n))

   return n;

   else

   return Maxlen(st,pos+(1<<(j-1)));

}

int main()

{

   // freopen("in.txt","r",stdin);

    while(scanf("%d%d%d",&n,&m,&k)!=EOF)

    {

        for(int i=1;i<=n;i++)

        scanf("%d",&a[i]);

        rmq();

        if(query(1,n)<m)

        {

            printf("0\n");

            continue;

        }

        int ans=0;

        for(int i=1;i<=n;i++)

        {

           int tmp=Maxlen(i,i-1);

           ans=max(ans,tmp-i+1);

           if(tmp==n||((n-i+1)<=ans))

           break;

        }

       printf("%d\n",ans);

    }

    return 0;

}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

hdu3530Subsequence rmq的更多相关文章

  1. BZOJ 3489: A simple rmq problem

    3489: A simple rmq problem Time Limit: 40 Sec  Memory Limit: 600 MBSubmit: 1594  Solved: 520[Submit] ...

  2. UVA 11235Frequent values(RMQ)

    训练指南P198 题意:给出一个非降序排列的整数数组a1, a2…… an,你的任务是对于一系列询问(i,j),回答ai, ai+1 ……aj 中出现的次数最多的次数 这题不仅学到了rmq的应用还学到 ...

  3. 51nod1174(RMQ)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1174 题意:中文题诶- 思路:RMQ模板题 关于RMQ: h ...

  4. 2016 ACM/ICPC Asia Regional Dalian Online 1008 Function 二分+RMQ

    Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submissio ...

  5. Gym 100646 F Tanks a Lot RMQ

    Problem F: Tanks a Lot Imagine you have a car with a very large gas tank - large enough to hold what ...

  6. (RMQ版)LCA注意要点

    inline int lca(int x,int y){ if(x>y) swap(x,y); ]][x]]<h[rmq[log[y-x+]][y-near[y-x+]+]])? rmq[ ...

  7. 洛谷P2412 查单词 [trie树 RMQ]

    题目背景 滚粗了的HansBug在收拾旧英语书,然而他发现了什么奇妙的东西. 题目描述 udp2.T3如果遇到相同的字符串,输出后面的 蒟蒻HansBug在一本英语书里面找到了一个单词表,包含N个单词 ...

  8. POJ3368Frequent values[RMQ 游程编码]

    Frequent values Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17581   Accepted: 6346 ...

  9. [tem]RMQ(st)

    倍增思想 代码中有两个测试 #include <iostream> #include <cmath> using namespace std; const int N=1e5; ...

随机推荐

  1. 以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区

    以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区 以正确的方式开源 Python 项目 英文原文:Open Sourcing a Python Project the Right ...

  2. Swift实现OC中的单例模式

    一.MySingle类 import Foundation class MySingle{ //定义单例的属性 var name:String? var age:Int? var height:Dou ...

  3. 基于Opencv图像处理的时时头像採集试验

    2014 4.20 近期想做一个关于图像处理的软件玩玩,可惜也没有什么特别的想法,就当玩玩好了,准备用Opencv开源库实现下简单的功能吧. Opencv是一个专业的图像处理库,里面有非常多基础函数能 ...

  4. HTML学习笔记——各种居中对齐

    0.前言     水平居中基本方法--指定块的宽度并设定块的左右外边距为auto,上下外边距可取0,那么该块能够在父元素中水平居中. 样式例如以下: 1:margin:0px auto 2:margi ...

  5. Android拖动和缩放图片

    Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...

  6. 网页favicon.ico图标设置(转)

    随便打开一个网页:比如 http://www.baidu.com/ 可以看到在浏览器的标签头上面显示了一个图标,这个图标是:,也就是我们常说的favicon.ico. 由于这篇文章主要讨论favico ...

  7. 嗨翻C语言

    <嗨翻C语言> 基本信息 作者: (美)David Griffiths    Dawn Griffiths    译者: 程亦超 出版社:人民邮电出版社 ISBN:978711531884 ...

  8. Android利用Get、Post 获取网络数据

    首先是Get: 布局非常easy.就一个button,主要看一下MainActivity吧: package com.francis.httpget; import android.app.Activ ...

  9. HDU3537-Daizhenyang&#39;s Coin(博弈SG-打表)

    <span style="color: green; font-family: Arial; font-size: 12px; background-color: rgb(255, 2 ...

  10. Java的JXL操作xls形式

    jxl这是一个韩国的写作java操作excel工具, 源世界中,有两套比較有影响的API可供使用.一个是POI,一个是jExcelAPI.当中功能相对POI比較弱一点.但jExcelAPI对中文支持非 ...