2025年中国海洋大学计算机复试上机真题
以下为一道典型的模拟类算法题目,考察学生对队列操作和动态调整的理解。
题目名称:学生排队
时间限制:1000 ms
内存限制:256 mb
体育老师小明需要将班级学生按学号从小到大排列后进行若干次位置调整。初始时,所有学生按照学号升序排成一列,学号较小的在前。随后,小明会发出一系列调整指令。
每次调整包含一个操作:指定某位学号为 p 的同学出队,向前或向后移动若干位后再重新插入队列中。移动的距离由参数 q 决定:
- 若 q > 0,表示该同学向后移动 q 个位置;
- 若 q < 0,表示该同学向前移动 |q| 个位置(即移动 -q 位)。
注意:移动过程中所指的“学号”是固定的标识符,并非当前队列中的位置编号。移动时需确保不会越界:
- 向后移动时,移动距离不超过该生之后的人数,若等于则移至队尾;
- 向前移动时,移动距离不超过该生之前的人数,若等于则移至队首。
示例说明
假设共有8名学生,初始顺序为:1, 2, 3, 4, 5, 6, 7, 8。
- 第一次调整:“3号同学向后移动2位”。3号从原位置移出,越过4、5,在6之前插入,得到新序列:1, 2, 4, 5, 3, 6, 7, 8;
- 第二次调整:“8号同学向前移动3位”。8号出队,向前移动3人,插入到5和3之间,结果为:1, 2, 4, 5, 8, 3, 6, 7;
- 第三次调整:“3号同学向前移动2位”。3号再次调整,向前两步,进入5与8之间,最终序列为:1, 2, 4, 3, 5, 8, 6, 7。
输入格式
第一行是一个整数 n,代表学生总数,学号范围为 1 到 n。
第二行是一个整数 m,表示总共进行了 m 次调整。
接下来 m 行,每行两个整数 p 和 q:
- 当 q 为正数时,表示学号为 p 的学生向后移动 q 位;
- 当 q 为负数时,表示学号为 p 的学生向前移动 |q| 位。
数据约定:n 和 m 均不超过 100。
输出格式
输出一行,包含 n 个整数,用空格分隔,表示经过所有调整后,从队首到队尾的学生学号序列。
样例输入
8 3 3 2 8 -3 3 -2
样例输出
1 2 4 3 5 8 6 7
根据上述规则模拟每一次移动过程,即可得出最终的排列顺序。


雷达卡


京公网安备 11010802022788号







