【题解】 向右看齐
题目来源:洛谷
题目描述
约翰的N(1≤N≤10^5)头奶牛站成一排,奶牛i的身高是Hi(l≤Hi≤1,000,000).现在,每只奶牛都在向右看齐.对于奶牛i,如果奶牛j满足i 第 1 行输入 N,之后每行输入一个身高 H_i。 共 N 行,按顺序每行输出一只奶牛的最近仰望对象,如果没有仰望对象,输出 0。 输入 #1 【输入说明】6 头奶牛的身高分别为 3, 2, 6, 1, 1, 2. 【输出说明】奶牛#1,#2 仰望奶牛#3,奶牛#4,#5 仰望奶牛#6,奶牛#3 和#6 没有仰望对象。 对于 20%的数据: 1≤N≤10; 对于 50%的数据: 1≤N≤1,000; 对于 100%的数据:1≤N≤100,000;1≤H_i≤1,000,000; 我用的是单调队列,很容易理解,一遍过,跑测试点最快的3ms,最慢的20ms 用deque去维护一个单调递减队列q,拿样例来说 3,2,6,1,1,2 给他们编号,成这样 (3,1),(2,2),(6,3),(1,4),(1,5),(2,6) 首先(3,1)入队(从队尾入,下面一样) (2,2)入队,队列不变 (6,3)入队,因为6比3和2都大,所以6是他们的第一个仰望对象,把3和2删除,记录他们的答案就是6的编号3,此时 (1,4)入队,队列不变 (1,5)入队,队列不变 (2,6)入队,因为2比队里的两个1都大,所以2是他们的第一个仰望对象,把两个1删除,记录他们的答案就是2的编号6,此时 没有新的数字入队,结束,6和2的答案没有更新,说明他们没有仰望对象输入格式
输出格式
输入输出样例
6
3
2
6
1
1
2
输出 #1
3
3
0
6
6
0说明/提示
数据规模
思路:
q:(3,1)
q:(3,1),(2,2)
q:(6,3)
q:(6,3),(1,4)
q:(6,3),(1,4),(1,5)
q:(6,3),(2,6)
code:
#include
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
