欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1579E1.Permutation Minimization by Deque
Permutation Minimization by Deque
题目描述
实际上,问题 E1 和 E2 并没有太多共同之处。你应该将它们视为两个独立的问题。
给定一个长度为 的排列 。长度为 的排列是一个长度为 的数组,其中每个整数 到 恰好出现一次。例如, 和 是合法的排列,而 和 不是。
我们考虑一个初始为空的 双端队列(deque)。双端队列是一种支持在队首和队尾都能添加元素的数据结构。例如,如果当前队列中的元素为 ,将元素 添加到队首后,队列变为 ;将同一个元素添加到队尾后,队列变为 。
排列中的元素依次被加入到初始为空的双端队列中,顺序从 到 。在每次加入元素之前,你可以选择将其加入到队首或队尾。
例如,若排列 ,一种可能的操作序列如下:
- 将 加入队尾:队列为 ;
- 将 加入队首:队列为 ;
- 将 加入队尾:队列为 ;
- 将 加入队尾:队列为 。
请你找出在整个排列处理完后,双端队列中可能得到的字典序最小的序列。
一个序列 的字典序小于序列 ,当且仅当存在某个 ,使得 且 。换句话说,如果序列 和 有一段(可能为空)前缀相同,且下一个元素 比 的对应元素小,则 的字典序更小。例如,序列 的字典序小于 ,因为前两个元素 相同,第三个元素 。
输入格式
第一行包含一个整数 (),表示测试用例的数量。
接下来的 行描述每个测试用例。
每个测试用例的第一行包含一个整数 (),表示排列的长度。第二行包含 个用空格分隔的整数 (,所有 均互不相同),表示排列的元素。
保证所有测试用例中 的总和不超过 。
输出格式
输出 行,每行对应一个测试用例的答案。每个答案应包含 个用空格分隔的整数,表示通过上述算法得到的字典序最小的排列。
说明/提示
从排列 得到字典序最小排列 的一种方式已在题目描述中给出。
由 ChatGPT 4.1 翻译
样例
5
4
3 1 2 4
3
3 2 1
3
3 1 2
2
1 2
2
2 1
1 3 2 4
1 2 3
1 3 2
1 2
1 2
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |