思考熊的马拉松(是自己撰写的题解,未经求证可能有误,如果有误可以改正)

容易知道,速度慢的应该不会对速度快的套圈(显然)

考虑对每一个速度慢的熊进行处理,他被多少个快的熊套圈

设两只熊的速度分别为\(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\),对整数比较大小即可

posted @ 2021-09-27 21:04  最爱丁珰  阅读(65)  评论(0编辑  收藏  举报