在一个先进的环形粒子加速器中,科学家们需要精确控制其中粒子的能量分布以进行高能物理实验。加速器环道上分布着 n 个等距的能量监测点,它们实时记录着经过粒子的能量值。我们设这些能量值构成一个序列 E = e_0, e_1, ..., e_n-1 。 为了维持加速器磁场的稳定,该能量序列 E 必须满足一种特殊的“循环单调非递减”性质。该性质具体表现为:序列中至多存在一个“断点”,即一个下标 i ∈ \0, 1, ..., n-1 ,使得 e_i > e_(i+1) ±od n 。在序列的其他所有位置 j ≠ i ,均满足 e_j ≤ e_(j+1) ±od n 。这个性质保证了能量从某一点开始单调递增,直到达到峰值,然后跃迁回最低值,形成一个闭环。 例如,能量序列 \30, 40, 50, 10, 20 就是一个满足该性质的序列。能量从 30 开始递增到 50 ,然后在监测点 2 之后,“断点”出现, e_2 = 50 > e_3 = 10 ,能量跃迁回 10 ,并再次开始递增。 现在,实验需要向加速器中注入一个新的粒子,其能量值为 e_new 。您的任务是,找到一个合适的插入位置,将 e_new 插入到序列 E 中,形成一个长度为 n+1 的新序列 E' ,并确保 E' 仍然满足“循环单调非递减”性质。 如果存在多个合法的位置可以插入新的粒子,为了保证系统的快速响应,请选择使得新粒子在新序列 E' 中下标最小的那个位置。
第一行包含一个整数 n ,代表初始状态下监测点的数量,其中 2 < n ≤ 400 。 第二行包含 n 个整数,代表序列 E 中的各个能量值 e_i ,其中 1 ≤ e_i ≤ 1000 。 第三行包含一个整数 e_new ,代表待注入粒子的能量值,其中 1 ≤ e_new ≤ 1000 。
输出一行,包含 n+1 个整数,代表插入新粒子后,符合要求的能量序列 E' 。整数之间用空格隔开。
7 23 37 39 49 49 16 22 33
23 33 37 39 49 49 16 22
考点:数组
数据规模 n ≤ 400 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:数组
本题切入点
先定位唯一的「断点」(满足 e_i > e_{i+1} 的位置),再在断点邻域找唯一合法插入位置使新序列仍循环非递减,比较候选位置取下标更小者,最后输出新序列;n≤400 可直接扫描。
围绕数组的一次或多次线性扫描,边扫边维护统计量。
思路框架(数组 通法 · 非本题专属)
实现要点:注意下标从 0 还是 1 开始(题面里「下标从 1 开始」要自己减 1)。
复杂度:时间 O(n) | 空间 O(1) 或 O(n)
该范式的通法易错点
对照本题
样例 1
7 / 23 37 39 49 49 16 22 / 3323 33 37 39 49 49 16 22解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-9月24号开发岗。