Link
搜到了波兰人的题解!!还有视频!!
Solution
1 | 1: 1 |
打表发现,50来项之后就有,而,所以差值要,只能是一个偶数项和它的前一项,也就是。 这些只能让集合增加一个的数字,即,所以数组在之后是连续变化,每次增加。 所以把小范围的答案算出来存进,也把存起来; 大范围的在中二分找到最后一个小于的,也就是说在预处理的这些项之外,要找到第对数字。然后再算一下就可以得到答案了。 比较好理解,但我太jiruo,想了很长时间。
Code
1 | //Code by Lucida |
搜到了波兰人的题解!!还有视频!!
1 | 1: 1 |
打表发现,50来项之后就有,而a[2i+1]=2a[2i],所以差值要,只能是一个偶数项和它的前一项,也就是a[2i]−a[2i−1]=r[2i−1]。 这些a[2i]只能让集合S增加一个的数字,即r[2i−1],所以数组r[]在a[i]>1e9之后是连续变化,每次增加1。 所以把小范围的答案算出来存进,也把S存起来; 大范围x的在S中二分找到最后一个小于x的p,也就是说在预处理的这些项之外,要找到第x−p对数字。然后再算一下就可以得到答案了。 比较好理解,但我太jiruo,想了很长时间。
1 | //Code by Lucida |