Perfect Flush(单调栈)
Perfect Flush题意数据范围思路代码
题意
给定nnn和kkk,并且给出长度为nnn的数字序列,序列中的每个数字都不超过kkk。求子序列中字典序最小的kkk排列。
数据范围
1≤n,k≤2000001 \leq n,k \leq 2000001≤n,k≤200000
思路
用单调栈维护序列。首先开一个lastlastlast数组记录每一个数字出现了多少次,然后扫描序列,如果当前数字比栈顶元素小,并且栈顶元素在后面还会出现,那么弹出栈顶元素,再把当前数字压栈。最后输出栈中元素即可。
代码
#incl
原创
2020-10-04 11:06:07 ·
351 阅读 ·
2 评论