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