qhzx内测#1

scerw

1s/256MB

题目背景

编程也就图一乐,收收心去电子厂拧螺丝吧,我们都有光明的未来。

题目描述

zyb_123zh1221_qwq 坐着 Smeow 牌大巴车来到电子厂打工。板栗 厂长热情接待了他们。

板栗:“欢迎来到电子厂!我们先来回答一个问题吧!”

厂里研究出了拧螺丝的新科技。有 \(n\) 根竖着的滑道, \(m\) 根横着的滑道。竖着的滑道在空地上并排放置,编号为\(1,2,3,...n\)

横着的滑道是用来连接两根相邻的竖着滑道的,不同的是,每根横着的滑道所在的 高度均不相同

员工把螺丝放在竖滑道顶端。接下来螺丝会依次从顶端沿着竖着的滑道开始向下滑落,在滑落的过程中,如果遇到横着的滑道时,会滑向横着滑道的另一端,然后继续向下滑落,直到滑落到最低点。图中绿色线表示 \(1\) 号螺丝向下滑落的轨迹。

板栗给了你两个任务:

  • 通过给定的 \(n\) 根竖着的滑道和 \(m\) 根横着的滑道构成的结构,求出每个螺丝滑落到最低点时,最底端由螺丝编号构成的序列,如图中的序列为: \(2,4,1,5,3\)
  • 如果重新选择一些横着的滑道,并按照最优的方法连接两根相邻的竖着的滑道,使得获得的最终序列同样能够达到上面的效果,那么最少需要多少根横着的滑道?

你只要完成这两个任务就能进厂打工啦!

输入格式

第一行以空格隔开的两个正整数 \(n,m\) ,表示竖着的滑道和横着的滑道的数量。
第二行 \(m\) 个以空格隔开的正整数 \(a_i\) ,表示 从高到低 的横着的滑道。数字 \(a_i\) 的意义为,存在一条横着的滑道连接第 \(a_i(1 \leq a_i \lt n)\) 根竖着的滑道和第 \(a_i+1\) 根竖着的滑道。

输出格式

第一行 \(n\) 个以空格隔开的正整数,表示最底端由螺丝编号构成的最终序列。
第二行一个整数,表示最少需要多少根横着的滑道也能达到同样的效果。

输入输出样例 #1

输入 #1

3 3
1 2 1

输出 #1

3 2 1
3

输入输出样例 #2

输入 #2

6 8
1 3 2 1 4 3 5 4

输出 #2

4 2 5 6 1 3
8

数据范围

对于 \(20\%\) 的数据, \(1 \leq n \leq 5,1 \leq m \leq 10\)
对于 \(50\%\) 的数据, \(1 \leq n \leq 1000,1 \leq m \leq 5000\)
对于 \(100\%\) 的数据, \(1 \leq n \leq 10^5,1 \leq m \leq 10^6\)

posted @ 2025-08-25 11:08  洛苡hh  阅读(5)  评论(0)    收藏  举报