题目链接:###

WOJ1109

题目描述:###

奶牛在熊大妈的带领下排成了一条直队。 显然,不同的奶牛身高不一定相同…… 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的B是最高的,且B高于A奶牛,且中间如果存在奶牛,则身高不能和A、B奶牛相同,的这样的一些奶牛最多会有多少头。 从左到右给出奶牛的身高,请告诉它们符合条件的最多的奶牛数(答案可能是0、2,但不会是1)。

输入

第一行一个数N(2<=N<=100000),表示奶牛的头数。 接下来N个数,每行一个数,从上到下表示从左到右奶牛的身高(1<=身高<=maxlongint)。

输出

一行,表示最多奶牛数。

分析:###

维护一个单减的单调栈,读入一个数x时,如果单调栈顶的数比x更小,就弹出这个数(设为xi),而如果x当前可延伸的左端点值比xi的左端点值更大,就用xi可以延伸到的最左端的端点更新x的最左端的端点(值和编号都要更新)(xi<x,所以xi如果能延伸到左端点xj,则x一定也能延伸到左端点j)弹完压入x并更新ans=r_id-l_id+1

如果ans1则说明r_idl_id,这种情况是不合法的(相当于A==B),把ans更改为0

输出ans


代码:###

#include<bits/stdc++.h>
#define MAXN (100000+5)
using namespace std;
inline int read(){
int f=1,cnt=0;char c;
c=getchar();
while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}
while(isdigit(c)){cnt=cnt*10+c-'0';c=getchar();}
return cnt*f;
}
struct node{int ldat;int rdat;int lid;int rid;}sta[MAXN],x;
int n;
int top=0;
int ans=-1;
int main(){
n=read();
for(register int i=1;i<=n;i++){
x.rdat=read();x.ldat=x.rdat;
x.lid=x.rid=i;
while(x.rdat>sta[top].rdat&&top){
if(x.ldat>sta[top].ldat){
x.ldat=sta[top].ldat;
x.lid=sta[top].lid;
}
top--;
}
sta[++top].ldat=x.ldat;
sta[top].rdat=x.rdat;
sta[top].lid=x.lid;
sta[top].rid=x.rid;
if(ans<sta[top].rid-sta[top].lid+1)ans=sta[top].rid-sta[top].lid+1;
}
if(ans==1)ans=0;
printf("%d",ans);
return 0;
}

WOJ1109 奶牛排队的更多相关文章

  1. NOIP2012模拟试题 121105【奶牛排队(tahort)

    3.奶牛排队(tahort) [ 问题描述] 奶牛在熊大妈的带领下排成了一条直队. 显然,不同的奶牛身高不一定相同…… 现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的 ...

  2. USACO 奶牛排队

    题目:给出一个只含有1,2,3的数字序列,问最少交换多少次才能将之变为递增数列. 解: 注意到只有1,2,3,我们只要将1,3交换到自己的应在位置上那么排序就已经完成了. 需要交换的有几种,记$a(x ...

  3. USACO翻译:USACO 2012 JAN三题(3)

    USACO 2012JAN(题目三) 一.题目概览 中文题目名称 放牧 登山 奶牛排队 英文题目名称 grazing climb lineup 可执行文件名 grazing climb lineup ...

  4. USACO翻译:USACO 2013 JAN三题(1)

    USACO 2013 JAN 一.题目概览 中文题目名称 镜子 栅栏油漆 奶牛排队 英文题目名称 mirrors paint lineup 可执行文件名 mirrors paint lineup 输入 ...

  5. poj3270

    Cow Sorting Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6750   Accepted: 2633 Descr ...

  6. 03day2

    03day1 不说了,图论题因为没有把加边的过程放到循环里导致只有 10 分.(不要吐槽我啊...)   竞赛排名 排序 [问题描述] [输入] 文件的第一行为参赛总人数 N(1≤N≤1000),从第 ...

  7. loj题目总览

    --DavidJing提供技术支持 现将今年7月份之前必须刷完的题目列举 完成度[23/34] [178/250] 第 1 章 贪心算法 √ [11/11] #10000 「一本通 1.1 例 1」活 ...

  8. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  9. CSU训练分类

    √√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...

随机推荐

  1. vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 "invalid signature"错误解决方案

    项目背景 vue-cli生成的单页面项目,router使用history模式.产品会在公众号内使用,需要添加微信JSSDK,做分享相关配置. 遇到的问题 相关配置与JS接口安全域名都已经ok,发布后, ...

  2. Wordpress播客网站搭建

  3. Mac 下如何安装pip 和xlwt

    sudo easy_install pip pip install xlwt sudo pip install xlwt sudo pip install requests

  4. SHOW PROCESSLIST Syntax

    https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html SHOW PROCESSLIST shows you which threa ...

  5. JAVA变量存储

    1.java变量存储域 java变量的存储区域主要放在以下几个地方: (1)寄存器:可以说是最快的存储区,在C/C++中可以声明寄存器变量,但是在java中不能声明寄存器变量,只是编译器在编译时确定. ...

  6. iOS 设置TextView控件内容行间距

    - (BOOL)textViewShouldBeginEditing:(UITextView *)textView { if (textView.text.length < 1) { textV ...

  7. mysql数据库引擎InnoDB和MyISAM的区别

    InnoDB支持行级锁和表级锁(默认行级锁),支持事务,外部键等:大量的insert和update更快等.只有通过索引条件检索数据,InnoDB 才使用行级锁,否则,InnoDB 将使用表锁. MyI ...

  8. SDUT OJ 1221 亲和数 (找出某个数n所有的因子数,只需要暴力:2->sqrt(n) 即可 )

    亲和数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲和数对. ...

  9. 自定义表单SQL命令行批量删除垃圾留言

    1.每天被恶意留言困扰,花费大量的时间去清理却效果不理想,对于没有能力做二次开发并且靠纯手工删除留言的菜鸟来讲是一个大麻烦. 2.大家都知道织梦的留言内容是存在数据库里的,而数据库的内容是可以批量删除 ...

  10. Linux:NFS文件共享问题重新认识

    之前也搭建过nfs,服务器之间目录里面的文件同享也一直正常.今天有现场反映,搭建nfs后,客户端文件在服务器端看不见. 在我之前的认识里,服务器端搭建好并启动nfs服务,客户端mount后,客户端.服 ...