跳转至

ABC356A Subsegment Reverse

题目分析

给定一个正整数 $N$,我们先构造数组 $A = [1, 2, 3, ..., N]$。
题目要求将第 $L$ 到第 $R$ 项之间的部分翻转,并输出整个数组。

例如: - 输入 5 2 3,原数组为 [1 2 3 4 5] - 翻转第 $2$ 到第 $3$ 项,变成 [1 3 2 4 5]


解题思路

本题可以使用三个连续的循环,按区间直接打印对应的数字:

  1. 第一个区间:从 $1$ 到 $L-1$,按正常顺序输出;
  2. 第二个区间:从 $R$ 到 $L$,倒着输出
  3. 第三个区间:从 $R+1$ 到 $N$,按正常顺序输出。

这样就不需要用数组、交换或双指针,逻辑更直接。

实现步骤

  • 使用整型变量 N, L, R 读取输入;
  • 使用三个 for 循环依次打印每一段;
  • 每次循环中输出数字和空格;
  • 最后一位输出完后换行。

复杂度分析

  • 时间复杂度:$O(N)$,只遍历了 $N$ 次;
  • 空间复杂度:$O(1)$,只用常数个变量,无需额外数组。

总结

  • 本题可以用数组操作;
  • 将输出分为三段处理,逻辑清晰、实现简单;
  • 是练习区间处理和循环控制结构的好题目;
  • 注意细节,如下标从 $1$ 开始、输出格式要求严格。