qhzx内测#1
scerw
1s/256MB
题目背景
编程也就图一乐,收收心去电子厂拧螺丝吧,我们都有光明的未来。
题目描述
zyb_123 和 zh1221_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\) 。

浙公网安备 33010602011771号