hdu 3530 Subsequence

/*
开始以为是二分...后来发现丫不单调... 
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
using namespace std;
int n,l,r,ans,tmin[maxn],tmax[maxn],a[maxn];
int qmin[maxn],qmax[maxn],headmin,tailmin,headmax,tailmax;
int ansmin[maxn],ansmax[maxn],lm;
int init()
{int f=1,x=0;char s=getchar();while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}return x*f;
}
int Judge(int k)
{int x;lm=0;int falg=0;tailmin=0;headmin=1;tailmax=0;headmax=1;for(int i=1;i<=k-1;i++){x=a[i];while(x>qmax[tailmax]&&tailmax>0){tailmax--;if(tailmax<headmax&&headmax>1)headmax--;}qmax[++tailmax]=x;tmax[tailmax]=i;if(i-tmax[headmax]+1>k)headmax++;while(x<qmin[tailmin]&&tailmin>0){tailmin--;if(tailmin<headmin&&headmin>1)headmin--;}qmin[++tailmin]=x;tmin[tailmin]=i;if(i-tmin[headmin]+1>k)headmin++;}for(int i=k;i<=n;i++){x=a[i];while(x>qmax[tailmax]&&tailmax>0){tailmax--;if(tailmax<headmax&&headmax>1)headmax--;}qmax[++tailmax]=x;tmax[tailmax]=i;if(i-tmax[headmax]+1>k)headmax++;ansmax[++lm]=qmax[headmax];while(x<qmin[tailmin]&&tailmin>0){tailmin--;if(tailmin<headmin&&headmin>1)headmin--;}qmin[++tailmin]=x;tmin[tailmin]=i;if(i-tmin[headmin]+1>k)headmin++;ansmin[lm]=qmin[headmin];}for(int i=1;i<=lm;i++){int tmp=ansmax[i]-ansmin[i];if(tmp>=l&&tmp<=r){falg=1;break;}}return falg;
}
int main()
{while(~scanf("%d%d%d",&n,&l,&r)){for(int i=1;i<=n;i++)a[i]=init();int li=0,ri=n;ans=0;while(li<=ri){int mid=(li+ri)/2;if(!Judge(mid)){ans=max(ans,mid);li=mid+1;}else ri=mid-1;}printf("%d\n",ans);}return 0;
}
/*
开始想的是直接单调队列 but 最大最小值的所在序列不确定 
不能搞出长度 不好办
其实可以维护出来的 对于序列的右端点是确定的 是i
而左端点开始默认是1 不断更新就好了 
考虑超出r的 设于队头的元素的位置分别为pmax pmin
不断删除队头 并更新n指针 直到在范围里
这是 指针位置就是序列的左端点 
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1000010
using namespace std;
int n,l,r,ans,tmin[maxn],tmax[maxn],a[maxn];
int qmin[maxn],qmax[maxn],headmin,tailmin,headmax,tailmax;
int init()
{int f=1,x=0;char s=getchar();while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}return x*f;
}
void Solve()
{int x,now=1;tailmin=0;headmin=1;tailmax=0;headmax=1;for(int i=1;i<=n;i++){x=a[i];while(x>qmax[tailmax]&&tailmax>=headmax)tailmax--;qmax[++tailmax]=x;tmax[tailmax]=i;while(x<qmin[tailmin]&&tailmin>=headmin)tailmin--;qmin[++tailmin]=x;tmin[tailmin]=i;while(headmin<=tailmin&&headmax<=tailmax&&qmax[headmax]-qmin[headmin]>r){if(tmax[headmax]<=tmin[headmin]){now=tmax[headmax]+1;headmax++;}else {now=tmin[headmin]+1;headmin++;}}if(qmax[headmax]-qmin[headmin]>=l)ans=max(ans,i-now+1);}
}
int main()
{while(~scanf("%d%d%d",&n,&l,&r)){for(int i=1;i<=n;i++)a[i]=init();ans=0;Solve();printf("%d\n",ans);}return 0;
}

 

转载于:https://www.cnblogs.com/yanlifneg/p/5704670.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FirstLetterUtil

package cn.edu.hbcf.common.utils;public class FirstLetterUtil {private static int BEGIN 45217;private static int END 63486;// 按照声母表示&#xff0c;这个表是在GB2312中的出现的第一个汉字&#xff0c;也就是说“啊”是代表首字母a的第一个汉字。// i, u, v都不做…

淘宝网的技术发展史(三)——分布式时代

本文是《淘宝网的技术发展史》系列连载文的第三篇。在系统发展的过程中&#xff0c;架构师的眼光至关重要&#xff0c;作为程序员&#xff0c;把功能实现即可&#xff1b;但作为架构师&#xff0c;要考虑系统的扩展性、复用性&#xff0c;这种敏锐的感觉&#xff0c;有人说是一…

Flutter提示之Navigator operation requested with a context that does not include a Navigator.

1 、问题 用Flutter写了页面跳转&#xff0c;提示错误如下 Navigator operation requested with a context that does not include a Navigator. 2 、我的代码 void main() {runApp(MyApp1()); }class MyApp1 extends StatelessWidget {overrideWidget build(BuildContext c…

《地理信息系统概论》课后习题全部答案_黄杏元

第一章 地理信息系统导论 1、什么是地理信息系统(GIS)?它与一般计算机应用系统有哪些异同点? 答:地理信息系统:是由计算机硬件、软件和不同的方法组成的系统,该系统设计支持空间数据的采集、管理、处理、分析、建模和显示,以便解决复杂的规划和管理问题。 GIS脱胎于…

你知道出现“乱码”的原因是什么吗?(4)

作者简介 作者名&#xff1a;1_bit 简介&#xff1a;CSDN博客专家&#xff0c;2020年博客之星TOP5&#xff0c;蓝桥签约作者。15-16年曾在网上直播&#xff0c;带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息&#xff0c;迷茫的你会找到答案。 目录 HTML基…

Android应用程序线程消息循环模型分析(4)

接下来我们再看看应用程序的配置文件AndroidManifest.xml&#xff1a;<?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android" package"shy.luo.counter" andr…

【SignalR全套系列】之在.Net Core 中实现Server-Send Events消息推送

微信公众号&#xff1a;趣编程ACE关注可了解更多的.NET日常开发技巧&#xff0c;如需源码 请公众号留言 源码;如果觉得本公众号对你有帮助&#xff0c;欢迎关注【SignalR全套系列】之在.Net Core 中实现Server-Send Events消息推送1.前文链接&#xff1a;【SignalR全套系列】之…

GIS专业核心课程电子教材配套实验数据汇总(持续更新)

本文整合了GIS专业核心课程电子pdf教材,包括地理信息系统、地图学、遥感、摄影测量、遥感数字图像处理、工程测量、施工测量、GPS、数字测图、空间数据库、程序设计等,持续更新。 一、ArcGIS10实验教程(配套实验数据) 二、地理信息系统

Android数据手册:Android颜色码制表

在Android应用开发中经常要用各种控件&#xff0c;并为控件设置其背景颜色&#xff0c;使用各种不同的颜色为控件着色是很有必要的。 在Android系统中&#xff0c;各种颜色与其对应的码制如下所示&#xff1a; <resources> <color name"white">#ffffff…

Android之提示MIME type application/octet-stream cannot be inserted into **/images expected

1、问题 在三星手机(Androd10.0)我需要把图片插入系统图库,错误提示如下 AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appsinnova.android.keepdrop/com.appsinnova.android.keepdrop.account.AboutActivity}: java.lang.Ille…

7月18日实习日志

今天的上午的工作和昨天一样&#xff0c;上午转发了三十篇&#xff0c;基本上没有遇到什么问题。下午还是转载视频和发稿。 转载于:https://www.cnblogs.com/a1107/p/5706351.html

短网址服务设计

短网址服务设计 背景 短网址服务&#xff0c;用来将输入的一个长网址转换为一个短网址&#xff08;比如附录中的案例&#xff09;&#xff0c;当用户请求这个短网址时&#xff0c;服务查询出真实的url; 设计这么一个短网址服务&#xff0c;需要考虑哪些点&#xff1f; 数据结构…

我抓到bit哥了,嘿嘿嘿(5)

作者简介 作者名&#xff1a;1_bit 简介&#xff1a;CSDN博客专家&#xff0c;2020年博客之星TOP5&#xff0c;蓝桥签约作者。15-16年曾在网上直播&#xff0c;带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息&#xff0c;迷茫的你会找到答案。 目录 HTML基…

遥感、地理空间数据、全国基础数据下载网站大全汇总

本文收集整理了国内外常用的遥感、GNSS、地理空间数据下载网站,可以下载各种格式的矢量、栅格等数据,主要包括遥感影像、NDVI、太阳辐射、数字高程模型等各种地理空间数据,供GISer学习交流使用。 1. 地理空间数据云 该网站为国内学者使用最多的、数据下载方便的网站,可以…

RPA之基于FlaUI的微信发送消息给某人

本文由网友蓝创精英团队投稿&#xff0c;欢迎转载、分享原文作者&#xff1a;蓝创精英团队原文链接&#xff1a;https://kesshei.blog.csdn.net/article/details/124955177目的一直想实现微信的群发功能&#xff0c;但是&#xff0c;没有实现&#xff0c;原因有一条是怕违法&am…

Android之通过文件绝对路径获取音视频的时长和视频的缩略图

1 需求 遍历一个文件夹,需要获取音视频的时长和视频的第一帧图像 2 关键代码实现 获取本地音视频的时长(这里计算出来的是秒为单位),如果文件不是音视频,下面的函数会发生异常,也就是返回0,我们除了通过文件头来判断这个文件是音视频之后,然后再获取这个文件的时长,如…

1.8-zabbix服务端安装

zabbix 是另外一个用的比较多地监控工具&#xff0c;同样也需要 apachephp 的支持&#xff0c;但它比nagios 要多一个 mysql&#xff0c;因为它有数据需要存储。所以&#xff0c;安装 zabbix&#xff0c;必须要安装 mysql。cacti、nagios、zabbix都是用php写的网页&#xff0c;…

感受机房管理化繁为简-新款KVM使用心得

感受机房管理化繁为简-新款KVM使用心得 一、 背景 随着网络应用的不断增多&#xff0c;各地机房服务器数量也随之增加&#xff0c;利用多传统主机切换器的方式已经无法满足目前这种区域广、设备多人员紧缺的现状&#xff0c;而且即使是使用了一些远程管理软件&#xff0c;实现的…

我化身保姆为你提供 html 教学服务(6)

作者简介 作者名&#xff1a;1_bit 简介&#xff1a;CSDN博客专家&#xff0c;2020年博客之星TOP5&#xff0c;蓝桥签约作者。15-16年曾在网上直播&#xff0c;带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息&#xff0c;迷茫的你会找到答案。 目录 HTML基…

那一年,我考入了西北师范大学GIS专业,然而我很迷茫,GISer的职业规划到底是怎样的?

那一年&#xff0c;我考入了西北师范大学&#xff0c;录取专业为地理信息系统&#xff0c;也就是常说的GIS&#xff0c;本科毕业后又考取了GIS专业的研究生&#xff0c;顺利毕业&#xff0c;进入了高校从事GIS教育工作。作为一个GISer&#xff0c;我相信有很多人跟我一样很迷茫…