思考熊的马拉松(是自己撰写的题解,未经求证可能有误,如果有误可以改正)
容易知道,速度慢的应该不会对速度快的套圈(显然)
考虑对每一个速度慢的熊进行处理,他被多少个快的熊套圈
设两只熊的速度分别为\(v_{1}\),\(v_{2}\)(\(v_{1}\)<\(v_{2}\)),所有熊中速度最大的为\(v\)
那么每被套一次圈时间是\(\lfloor \frac{A}{v_{2}-v_{1}} \rfloor\)
由于总的时间为\(\lfloor \frac{AL}{v} \rfloor\)
所以这一对熊对答案的贡献就是\(\lfloor \frac{\frac{AL}{v}}{\frac{A}{v_{2}-v_{1}}} \rfloor=\lfloor \frac{L(v_{2}-v_{1})}{v} \rfloor\)
所以总的答案就是\(\sum_{i=1}^{n} \sum_{j=i+1}^{n} \lfloor \frac{L(v_{j}-v_{i})}{v} \rfloor=\sum_{i=1}^{n} \sum_{j=i+1}^{n} \lfloor \frac{Lv_{j}}{v} - \frac{Lv_{i}}{v}\rfloor\)
由于对\(\frac{a}{c}\),\(\frac{b}{c}\)
如果说\(\frac{a}{c}\)小数部分大于等于\(\frac{b}{c}\)的小数部分,则有\(\lfloor \frac{a}{c}-\frac{b}{c} \rfloor=\lfloor \frac{a}{c} \rfloor-\lfloor \frac{b}{c} \rfloor\);若小于的话还要在减一个\(1\)
所以上式可以先维护整数部分,再算出小数部分,求一个逆序对个数,减去即可。
而为了避免精度问题,需要对小数部分进行转化
\(\frac{a}{c}\)的小数部分为\(\frac{a}{c}-\lfloor \frac{a}{c} \rfloor\)
由于所有数都有一个分母\(v\),对上式乘上一个\(v\),对整数比较大小即可