• acwing 600. 仰视奶牛


    题目地址  https://www.acwing.com/problem/content/description/602/

    约翰有N头奶牛,编号为1到N。

    现在这N头奶牛按编号从小到大的顺序站成了一排,其中奶牛 i 的身高为HiHi。

    现在,每头奶牛都向它的右侧望向那些编号较大的奶牛,对于奶牛 i 如果存在一头奶牛 j 满足 i<ji<j 并且 Hi<HjHi<Hj,那么我们称奶牛 i 需要仰视奶牛 j。

    请你求出每头奶牛的最近仰视对象。

    输入格式

    第一行包含整数N。

    接下来N行,每行包含一个整数HiHi,其中第 i 行的数为编号为 i 的奶牛的高度。

    输出格式

    共 N 行,每行输出一个整数,其中第 i 行的输出整数表示编号为 i 的奶牛的最近仰视对象的编号,如果不存在仰视对象,则输出0。

    数据范围

    1N1e5
    1Hi1e6

    输入样例:
    6 
    3 
    2 
    6 
    1 
    1 
    2 
    输出样例:
    3 
    3 
    0 
    6 
    6 
    0 

    单调栈记录最近的未仰视的牛编号(有仰视的答案已经记录了 出栈)

     1 #include <iostream>
     2 #include <vector>
     3 #include <stack>
     4 
     5 
     6 using namespace std;
     7 
     8 const int N = 1e5+100;
     9 
    10 vector<int> arr(N,0);
    11 vector<int> ans(N,0);
    12 stack<int> st;
    13 int n ;
    14 
    15 int main()
    16 {
    17     cin >> n;
    18     for(int i =1;i<= n;i++){
    19         cin >> arr[i];
    20     }
    21     
    22     for(int i =1;i <= n;i++){
    23         while(!st.empty() && arr[i]>arr[st.top()]){
    24             ans[st.top()] = i;
    25             st.pop();
    26         }
    27         
    28         st.push(i);
    29     }
    30     
    31     while(!st.empty()){
    32          ans[st.top()] = 0;
    33          st.pop();
    34     }
    35     
    36     for(int i = 1 ;i<=n;i++){
    37         cout << ans[i] << endl;
    38     }
    39     
    40     
    41     return 0;
    42 }
    View Code
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    安卓笔记20170117
    android笔记20170116
    meta 标签的作用
    SASS 初学者入门
    JQuery selector
    浅谈js回调函数
    自己写的jquery 弹框插件
    魔兽种子
    html页面的CSS、DIV命名规则
    各种弹框素材的链接
  • 原文地址:https://www.cnblogs.com/itdef/p/10920524.html
Copyright © 2020-2023  润新知