COGS1212. 奶牛排队
来源:互联网 发布:网络电视江苏卫视直播 编辑:程序博客网 时间:2024/06/06 01:30
奶牛在熊大妈的带领下排成了一条直队。
显然,不同的奶牛身高不一定相同……
现在,奶牛们想知道,如果找出一些连续的奶牛,要求最左边的奶牛A是最矮的,最右边的B是最高的,且B高于A奶牛,中间如果存在奶牛,则身高不能和A、B奶牛相同。问这样的奶牛最多会有多少头?
从左到右给出奶牛的身高,请告诉它们符合条件的最多的奶牛数(答案可能是0,2,但不会是1)。【输入格式】
第一行一个数N (2≤N≤100000),表示奶牛的头数。
接下来N个数,每行一个数,从上到下表示从左到右奶牛的身高(1≤身高= maxlongint)。
【输出格式】
一行,表示最多奶牛数。
【样例输入】
512341
【样例输出】
4
【提示】
样例解析,取第1头到第4头奶牛,满足条件且为最多。
题解:
维护一个单调递减的单调队列/单调栈 每次插入高度时 若队中已有高度低于这头牛的牛 就判断队中牛能向左延伸到的那头牛能否被这头牛延伸到 (特判高度相等的) 然后每个位置计算答案并更新
代码:
#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;struct statype{int bhei,bpos,ahei,apos;}sta[100010];int top=-1;int main(){freopen("tahort.in","r",stdin);freopen("tahort.out","w",stdout);int n,ans=0;cin>>n;for(int i=1;i<=n;i++){top++;cin>>sta[top].bhei;sta[top].ahei=sta[top].bhei;sta[top].bpos=i;sta[top].apos=i;while(sta[top].bhei>sta[top-1].bhei&&top>=1){if(sta[top].ahei>sta[top-1].ahei){sta[top].ahei=sta[top-1].ahei;sta[top].apos=sta[top-1].apos;}sta[top-1]=sta[top];top--;}if(ans<sta[top].bpos-sta[top].apos+1)ans=sta[top].bpos-sta[top].apos+1;}if(ans==1)ans=0;cout<<ans<<endl;return 0;}
2 0
- COGS1212. 奶牛排队
- 奶牛排队
- [cogs 1117]奶牛排队
- 奶牛排队 (Standard IO)
- 奶牛排队 (Standard IO)
- 排队的奶牛
- [NOIP2010冲刺十二] 奶牛排队
- 8.9 排队的奶牛 2494
- 【USACO 2013 January Gold】奶牛排队
- 排队的奶牛(Cows in a Row)
- vijos1548:奶牛排队——题解
- poj 3169 差分约束(奶牛排队)
- 110_奶牛排队问题 layout (poj 3169)
- 奶牛排队_纪中1746_模拟
- July 16th 模拟赛C T4 奶牛排队 Solution
- 线段树 1212. [NOIP2010冲刺十二] 奶牛排队
- wikioi 1242 布局(奶牛排队) 差分约束
- 奶牛
- AtCoder:Infinite Sequence(dp)
- 浅析jvm与jmm模型结构与关系
- android studio导入Eclipce项目。找不到so文件
- USACO
- Ubuntu14.04+ROS indigo+ORB-SLAM2
- COGS1212. 奶牛排队
- 51nod1238 最小公倍数之和 V3
- 深入理解javascript原型和闭包(3)——prototype原型
- 集合类Collections.sort()的源码分析
- 移动端数据库神器-Realm 项目配置(入门一)
- Windows I/O操作
- Problem A: 求平均年龄
- Problem B: 合唱比赛开始了!
- log4j的基本配置