Freda的越野跑(2023.3) Freda报名参加了学校的越野跑。越野跑共有N人参加,在一条笔直的道路上进行。这N个人在起点处站成一列,相邻两个人之间保持一定的间距。比赛开始后,这N个人同时沿着道路向相同的方向跑去。换句话说,这N个人可以看作x轴上的N个点,在比赛开始后,它们同时向x轴正方向移动。 假设越野跑的距离足够远,这N个人的速度各不相同且保持匀速运动,那么会有多少对参赛者之间发生“赶超”的事件呢? 时间限制:1000 内存限制:262144 输入 第一行1个整数N。 第二行为N 个非负整数,按从前到后的顺序给出每个人的跑步速度。 对于50%的数据,2<=N<=1000。 对于100%的数据,2<=N<=100000。 输出 一个整数,表示有多少对参赛者之间发生赶超事件。 样例输入 5 1 3 10 8 5 样例输出 7 提示 我们把这5个人依次编号为A,B,C,D,E,速度分别为1,3,10,8,5。 在跑步过程中: B,C,D,E均会超过A,因为他们的速度都比A快; C,D,E都会超过B,因为他们的速度都比B快; C,D,E之间不会发生赶超,因为速度快的起跑时就在前边。
正确答案:参考程序(C++):同Freda越野跑,求逆序对数量。N人速度,赶超对数=后面人速度大于前面人的对数。用归并排序求逆序对。样例1,3,10,8,5→7。核心:归并排序逆序对。
试卷来源:202303 青少年等级考试C/C++真题八级