题目简述
n≤100000,m≤10000,k≤109n≤100000,m≤10000,k≤109
Bi≤109,Ai≤500Bi≤109,Ai≤500
思路
看到式子果断拆
有这样一个式子:⌊a−bc⌋=⌊ac⌋−⌊bc⌋−(a%c<b%c)⌊a−bc⌋=⌊ac⌋−⌊bc⌋−(a%c<b%c)
那怎样证明呢?
设a=k1c+d1(0≤d1<c),b=k2c+d2(0≤d2<c)a=k1c+d1(0≤d1<c),b=k2c+d2(0≤d2<c)
则a−b=k1c+d1−k2c−d2=(k1−k2)c+d1−d2a−b=k1c+d1−k2c−d2=(k1−k2)c+d1−d2
所以⌊a−bc⌋=c+⌊d1−d2c⌋⌊a−bc⌋=c+⌊d1−d2c⌋
又−c<d1−d2<c−c<d1−d2<c
则⌊d1−d2c⌋=−(d1<d2)⌊d1−d2c⌋=−(d1<d2)
所以⌊a−bc⌋=⌊ac⌋−⌊bc⌋−(a%c<b%c)⌊a−bc⌋=⌊ac⌋−⌊bc⌋−(a%c<b%c)
所以⌊T−BiAi⌋=⌊TAi⌋−⌊BiAi⌋−(T%Ai<Bi%Ai)⌊T−BiAi⌋=⌊TAi⌋−⌊BiAi⌋−(T%Ai<Bi%Ai)
对于每个询问,二分TT
记录每个的值的个数
对于每个AiAi记录Bi%AiBi%Ai的个数
分成三个部分分别求值即可
总结
- 式子要拆
- 求临界点要二分