[bzoj3401][Usaco2009 Mar]Look Up 仰望
来源:互联网 发布:西亚斯网络教学平台 编辑:程序博客网 时间:2024/04/25 14:25
Description
约翰的N(1≤N≤105)头奶牛站成一排,奶牛i的身高是Hi(l≤Hi≤1,000,000).现在,每只奶牛都在向后看齐.对
于奶牛i,如果奶牛j满足i<j且Hi<Hj,我们可以说奶牛i可以仰望奶牛j. 求出每只奶牛离她最近的仰望对象.
Input
第1行输入N,之后每行输入一个身高. N <= 10^5
Output
共N行,按顺序每行输出一只奶牛的最近仰望对象.如果没有仰望对象,输出0.
Sample Input
6
3
2
6
1
1
2【输入说明】6 头奶牛的身高分别为 3, 2, 6, 1, 1, 2.
Sample Output
3
3
0
6
6
0【输出说明】奶牛#1,#2 仰望奶牛#3,奶牛#4,#5 仰望奶牛#6,奶牛#3 和#6 没有仰望对象。
题解
相当于维护一个单调下降的栈
对于新点i,从栈的top开始匹配。如果匹配到的高度大于i了,就把i从这个位置压进栈
这样可以保证每个i更新的一定是最近的比他矮的
#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;int sta[1110000],top;int a[1110000],b[1110000];int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); top=0;sta[++top]=1; for(int i=2;i<=n;i++) { if(a[i]>a[sta[top]] && top>=1) while(a[i]>a[sta[top]] && top>=1)b[sta[top--]]=i; sta[++top]=i; } for(int i=1;i<=n;i++)printf("%d\n",b[i]); return 0;}
阅读全文
0 0
- bzoj3401[Usaco2009 Mar]Look Up 仰望
- [BZOJ3401] [Usaco2009 Mar]Look Up 仰望
- bzoj3401 [Usaco2009 Mar]Look Up 仰望
- [bzoj3401][Usaco2009 Mar]Look Up 仰望
- 【BZOJ3401】[Usaco2009 Mar]Look Up 仰望【单调栈】
- [BZOJ3401][Usaco2009 Mar]Look Up 仰望(单调栈)
- bzoj3401 [Usaco2009 Mar]Look Up 仰望 单调栈
- 【BZOJ3401】【单调栈】[Usaco2009 Mar]Look Up 仰望 题解
- BZOJ 3401: [Usaco2009 Mar]Look Up 仰望
- bzoj 3401: [Usaco2009 Mar]Look Up 仰望
- [Usaco2009 Mar]Cleaning Up
- bzoj3401 Look up(单调栈)
- P2947 [USACO09MAR]仰望Look Up
- 洛谷 2947 仰望Look Up(单调栈)
- BZOJ 1584 [Usaco2009 Mar] Cleaning Up
- bzoj1584【Usaco2009 Mar】Cleaning Up 打扫卫生
- [bzoj1584] [Usaco2009 Mar]Cleaning Up 打扫卫生
- 1584: [Usaco2009 Mar]Cleaning Up 打扫卫生
- rgb分量提取并叠加
- CStdioFile UNICODE编译 读取中文汉字乱码 .
- 读书笔记——《Java 8实战》系列之复合Lambda表达式
- SpringMVC中遇到页面跳转出现404错误的问题
- 从尾到头打印链表
- [bzoj3401][Usaco2009 Mar]Look Up 仰望
- react-native的props和state的使用
- AI也过万圣节;为了不交加班费,Facebook给员工封“经理”头衔|ServiceHot一周热闻
- springmvc与struts2区别
- Android 基础的 常用的权限与依赖
- C++ 成员函数与成员变量的关系
- jquery插件的开发
- 云自助清洗环境中进行混合云清洗时要小心
- 互联网金融-1.互联网金融用户、行业的一些特点