这真的是一道数据结构的好题. 题意是在一条直线上有n辆车,每辆车有一个初始位置x[i]和速度v[i],问最终(在无限时间后)一共会发生多少次超车事件(mod 1000000),以及输出这些事件(如果大于10000次输出前10000次) 对于第一问,很明显的求逆序对,如果满足x[i]<x[j]且v[i]>v[j],那么就会产生超车事件 所以树状数组即可 第二问则比较复杂,但我们可以发现每次超车发生时都是相邻的两车 所以我们发现这个可以用堆来维护 要注意一下的是当事件发生的时间相同时,要按编号大小…