题目描述

约翰的N(1≤N≤10^5)头奶牛站成一排,奶牛i的身高是Hi(l≤Hi≤1,000,000).现在,每只奶牛都在向右看齐.对于奶牛i,如果奶牛j满足i<j且Hi<Hj,我们可以说奶牛i可以仰望奶牛j. 求出每只奶牛离她最近的仰望对象.

输入输出格式

输入格式:

* Line 1: A single integer: N

* Lines 2..N+1: Line i+1 contains the single integer: H_i

第 1 行输入 N,之后每行输入一个身高 H_i。

输出格式:

* Lines 1..N: Line i contains a single integer representing the smallest index of a cow up to which cow i looks. If no such cow exists, print 0.

共 N 行,按顺序每行输出一只奶牛的最近仰望对象,如果没有仰望对象,输出 0。

输入输出样例

输入样例#1:

6
3
2
6
1
1
2

输出样例#1:

3
3
0
6
6
0 

思路:

建立一个单调上升的序列,每当有一个元素大于栈顶元素,则不断出栈直到满足单调上升后在入栈,并将出栈元素的仰慕对象标为新入栈的元素,最后输出即可。

原理可以自己模拟一遍便可知

// luogu-judger-enable-o2
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<stack>using namespace std;int a[100005][3],n,m,t,z[3][100005],mark[100005];int main()
{scanf("%d",&n);z[1][0]=23333333;int l=1,r=0;for (int i=1;i<=n;i++){scanf("%d",&a[i][1]);if (a[i][1]<z[1][r])r++,z[1][r]=a[i][1],z[2][r]=i;else{ while (a[i][1]>z[1][r]){a[z[2][r]][2]=i;z[2][r]=z[1][r]=0;r--;}     r++;z[1][r]=a[i][1];z[2][r]=i;}}for (int i=1;i<=n;i++)printf("%d\n",a[i][2]);
}

LuoGu_2947 [USACO09MAR] 向右看齐 Look Up相关推荐

  1. P2947 [USACO09MAR]向右看齐Look Up

    [USACO09MAR]向右看齐Look Up 题目描述 Farmer John's N (1 <= N <= 100,000) cows, conveniently numbered 1 ...

  2. [USACO09MAR]向右看齐Look Up(单调栈、在线处理)

    https://www.luogu.org/problem/P2947 题目描述 Farmer John's N (1 <= N <= 100,000) cows, convenientl ...

  3. 洛谷 P2947 [USACO09MAR]向右看齐Look Up (队列)

    题目描述 Farmer John's N (1 <= N <= 100,000) cows, conveniently numbered 1..N, are once again stan ...

  4. 洛谷 - [USACO09MAR]向右看齐Look Up(单调栈)

    题目链接:https://www.luogu.org/problem/P2947 时间限制: 1.00s 内存限制: 125.00MB 题目描述 Farmer John's N ( 1 ≤ N ≤ 1 ...

  5. [USACO09MAR]向右看齐Look Up————单调栈

    题解:本题主要考查单调栈.先构建一个栈,如果比栈顶的数大就a[i]是之前栈顶数的仰望对象,记录它的仰望对象并将原来栈顶的数出栈,反之再将a[i]进栈. 代码如下: #include<iostre ...

  6. 单调队列————[USACO09MAR]向右看齐Look Up

    先了解一下单调队列: 很明显的具有单调性 分为单调递增和单调递减两种,简单点讲就是维护队头为最大值或者为最小值 (建议采用双向队列  比较好写) 具体步骤:(这个是单调递减) 如果队列非空且当前值比队 ...

  7. c语言编程*三角形图形右看齐,EOJ 3213 向右看齐

    题目描述 N 头奶牛被紧急动员起来了,它们排成了一条长列.从左向右看,排在第 i 个位置的奶牛身高为 Hi.约翰一声令下,所有奶牛向右看齐.假设每头奶牛只能看到比自己高的牛.请问它们各自看到的最近的一 ...

  8. 【单调栈】向右看齐(luogu 2947)

    向右看齐 luogu 2947 题目大意: 有n头奶牛,它们各有各的高度,现在要求出每一头奶牛右边第一头比他高的奶牛是那一头 输入样例 6 3 2 6 1 1 2 输出样例 3 3 0 6 6 0 输 ...

  9. 【单调栈】向右看齐Look Up

    向右看齐Look Up 题目 约翰的N(1≤N≤10^5)头奶牛站成一排,奶牛i的身高是Hi(l≤Hi≤1,000,000).现在,每只奶牛都在向右看齐.对于奶牛i,如果奶牛j满足i<j且Hi& ...

最新文章

  1. 758.6G每秒:阿里云成功防御国内最大规模Memcached DDoS反射攻击
  2. 解决eclipse Run启动或Debug时Console控制台不自动弹出问题
  3. 用 for/in 在 Java 5.0 中增强循环
  4. python爬虫案例-python爬虫案例
  5. 网络编程学习笔记(getaddrinfo函数)
  6. main函数与命令行参数
  7. Nginx+Tomcat负载均衡配置
  8. ADF:动态视图对象
  9. linux中Cron定时任务系统命令详解
  10. python使用redis有序集合_Redis 有序集合(sorted set)
  11. 《机器人学导论》约翰 第二章
  12. 【操作系统】-- 时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法
  13. 好货推荐!两款免费的 Linux 桌面录制工具
  14. 抖音 触摸精灵_touchscale.co在哪里玩 抖音爆火触摸称重游戏是什么
  15. 基于C#在WPF中使用斑马打印机进行打印
  16. 阿里入股新浪微博:动机与前景分析
  17. 智能工厂数字化落地应用技术方案
  18. RPC 实战与核心原理分析
  19. Java第三章习题3-4(for循环输出俄文字母表)
  20. 翻译:Panda3D Manual/V. Programming with Panda/E. Camera Control

热门文章

  1. 自制NixieDisplay辉光数码管显示时钟
  2. C++:全排列函数next_permutation()和prev_permutation()
  3. 从实际出发,改变自己。
  4. 制度是绝情的,管理是无情的,执行是合情的
  5. 红旗linux 输入法问题,红旗Linux牵手搜狗输入法 带给用户无拘无束输入体
  6. 电话号码对应英文单词 (python)
  7. 学学逗女孩们开心吧!
  8. 北斗卫星系统的心脏——中国原子钟发展的历史
  9. Spring Data JPA 4.方法定义规范
  10. 【第 13 章 基于霍夫曼图像压缩重建--Matlab深度学习实战图像处理应用】