LuoGu_2947 [USACO09MAR] 向右看齐 Look Up
题目描述
约翰的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相关推荐
- P2947 [USACO09MAR]向右看齐Look Up
[USACO09MAR]向右看齐Look Up 题目描述 Farmer John's N (1 <= N <= 100,000) cows, conveniently numbered 1 ...
- [USACO09MAR]向右看齐Look Up(单调栈、在线处理)
https://www.luogu.org/problem/P2947 题目描述 Farmer John's N (1 <= N <= 100,000) cows, convenientl ...
- 洛谷 P2947 [USACO09MAR]向右看齐Look Up (队列)
题目描述 Farmer John's N (1 <= N <= 100,000) cows, conveniently numbered 1..N, are once again stan ...
- 洛谷 - [USACO09MAR]向右看齐Look Up(单调栈)
题目链接:https://www.luogu.org/problem/P2947 时间限制: 1.00s 内存限制: 125.00MB 题目描述 Farmer John's N ( 1 ≤ N ≤ 1 ...
- [USACO09MAR]向右看齐Look Up————单调栈
题解:本题主要考查单调栈.先构建一个栈,如果比栈顶的数大就a[i]是之前栈顶数的仰望对象,记录它的仰望对象并将原来栈顶的数出栈,反之再将a[i]进栈. 代码如下: #include<iostre ...
- 单调队列————[USACO09MAR]向右看齐Look Up
先了解一下单调队列: 很明显的具有单调性 分为单调递增和单调递减两种,简单点讲就是维护队头为最大值或者为最小值 (建议采用双向队列 比较好写) 具体步骤:(这个是单调递减) 如果队列非空且当前值比队 ...
- c语言编程*三角形图形右看齐,EOJ 3213 向右看齐
题目描述 N 头奶牛被紧急动员起来了,它们排成了一条长列.从左向右看,排在第 i 个位置的奶牛身高为 Hi.约翰一声令下,所有奶牛向右看齐.假设每头奶牛只能看到比自己高的牛.请问它们各自看到的最近的一 ...
- 【单调栈】向右看齐(luogu 2947)
向右看齐 luogu 2947 题目大意: 有n头奶牛,它们各有各的高度,现在要求出每一头奶牛右边第一头比他高的奶牛是那一头 输入样例 6 3 2 6 1 1 2 输出样例 3 3 0 6 6 0 输 ...
- 【单调栈】向右看齐Look Up
向右看齐Look Up 题目 约翰的N(1≤N≤10^5)头奶牛站成一排,奶牛i的身高是Hi(l≤Hi≤1,000,000).现在,每只奶牛都在向右看齐.对于奶牛i,如果奶牛j满足i<j且Hi& ...
最新文章
- 758.6G每秒:阿里云成功防御国内最大规模Memcached DDoS反射攻击
- 解决eclipse Run启动或Debug时Console控制台不自动弹出问题
- 用 for/in 在 Java 5.0 中增强循环
- python爬虫案例-python爬虫案例
- 网络编程学习笔记(getaddrinfo函数)
- main函数与命令行参数
- Nginx+Tomcat负载均衡配置
- ADF:动态视图对象
- linux中Cron定时任务系统命令详解
- python使用redis有序集合_Redis 有序集合(sorted set)
- 《机器人学导论》约翰 第二章
- 【操作系统】-- 时间片轮转调度算法、优先级调度算法、多级反馈队列调度算法
- 好货推荐!两款免费的 Linux 桌面录制工具
- 抖音 触摸精灵_touchscale.co在哪里玩 抖音爆火触摸称重游戏是什么
- 基于C#在WPF中使用斑马打印机进行打印
- 阿里入股新浪微博:动机与前景分析
- 智能工厂数字化落地应用技术方案
- RPC 实战与核心原理分析
- Java第三章习题3-4(for循环输出俄文字母表)
- 翻译:Panda3D Manual/V. Programming with Panda/E. Camera Control
热门文章
- 自制NixieDisplay辉光数码管显示时钟
- C++:全排列函数next_permutation()和prev_permutation()
- 从实际出发,改变自己。
- 制度是绝情的,管理是无情的,执行是合情的
- 红旗linux 输入法问题,红旗Linux牵手搜狗输入法 带给用户无拘无束输入体
- 电话号码对应英文单词 (python)
- 学学逗女孩们开心吧!
- 北斗卫星系统的心脏——中国原子钟发展的历史
- Spring Data JPA 4.方法定义规范
- 【第 13 章 基于霍夫曼图像压缩重建--Matlab深度学习实战图像处理应用】