首页 > 其他 > 详细

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

时间:2020-02-16 20:07:16      阅读:71      评论:0      收藏:0      [点我收藏+]

传送门


解题思路

就是对于每一个奶牛,求右边第一个比它高的位置。

很显然,单调栈。

AC代码

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<stack>
 4 using namespace std;
 5 const int maxn=100005;
 6 int n,ans[maxn],a[maxn];
 7 stack<int> s;
 8 int main()
 9 {
10     cin>>n;
11     for(int i=1;i<=n;i++){
12         scanf("%d",&a[i]);
13         if(s.empty()){
14             s.push(i);
15         }else{
16             while(!s.empty()&&a[s.top()]<a[i]){
17                 ans[s.top()]=i;
18                 s.pop();
19             }
20             s.push(i);
21         }
22     }
23     while(!s.empty()){
24         ans[s.top()]=0;
25         s.pop();
26     }
27     for(int i=1;i<=n;i++) printf("%d\n",ans[i]);
28     return 0;
29 }

 

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

原文:https://www.cnblogs.com/yinyuqin/p/12317808.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!