1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

解题思路

1. 基本思路

我们需要在原序列中挑选出一个长度为k的子序列,要求该子序列包含1, 2, ..., k,且每个数字只出现一次。字典序最小意味着我们在每一步选择时,要尽可能选择一个较小的数字。

2. 栈结构

为了解决这个问题,我们可以使用栈(Stack)来辅助选择数字。栈结构的特点是后进先出(LIFO),可以帮助我们在遍历过程中保持字典序最小。

P3347.第1题-子序列的字典序

    1000ms Tried: 177 Accepted: 49 Difficulty: 5 所属公司 : 京东
    算法与标签>栈

题目内容

现在有一个长度为nnn的数字序列,每个数都在111~kkk的范围内,且111~kkk内每个数字都至少出现过一次。现在我们想在这里面找一个子序列,使得111~kkk恰好出现一次,且字典序最小。请你通过程序得出结果。

我们认为:

BBB是AAA的子序列,当且仅当可以从AAA中删掉000个或任意个元素之后按照原来的顺序拼接起来得到BBB。

序列AAA的字典序小于BBB,当且仅当存在一个位置kkk,使得A[k]<B[k]A[k]<B[k]A[k]<B[k]且A[i]=B[i],i=1...k−1A[i]=B[i],i=1...k-1A[i]=B[i],i=1...k−1。

输入描述

第一行两个空格隔开的正整数nnn和kkk;

第二行nnn个空格隔开的正整数,表示该数字序列aia_iai​。 1≤k≤n≤5∗104,1≤ai≤k1≤k≤n≤5*10^4,1≤a_i≤k1≤k≤n≤5∗104,1≤ai​≤k

输出描述

输出一行kkk个数字,表示字典序最小的子序列。不要输出行末空格。

样例1

输入

5 3
2 1 3 3 2

输出

1 3 2

说明

其中一种可行的方案为:2 {1} {3} 3 {2},选定括号中的数字,构成子序列,可知此时字典序最小。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 43ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?