分块
已知某函数$f(x)$对于$x\in[l,r]$,有$f(x)$关于$x$单调,且$f(x)$值域远小于$x$的定义域。
现在要你求$\sum_{x=1}^n g(x,f(x))$
那么我们就可以根据$f(x)$对$g$进行分块,在这一块中,始终有常数$y=f(x)$,然后对$h(x)=g(x,y)$统计$x$的前缀和。
最终我们就能很快的计算答案。
细节
对于分块,很多时候我们无法直接计算块的范围,需要二分,比如这题 https://nanti.jisuanke.com/t/42386
下面展示详细的二分分块代码:
1 | int f(ll x) { |
过题代码
1 |
|
- 本文作者: fightinggg
- 本文链接: http://fightinggg.github.io/yilia/yilia/QSUB3C.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!