Educational Codeforces Round 138 (Rated for Div. 2)
Educational Codeforces Round 138 (Rated for Div. 2)
C. 博弈
D. 数论
E. 多源01bfs
快速傅里叶变换(FFT)支持在O(nlogn)
的时间内计算两个n
度的多项式的乘法,比朴素的O(n^2)
算法更高效。由于两个整数的乘法也可以被当作多项式乘法,因此这个算法也可以用来加速大整数的乘法计算。
Miller_Rabin(x)
返回true
代表x
是质数。Findfac(n)
对n
进行质因数分解,结果保存在数组factor
中下标从0
开始用,tol是数量,数组是无序且有重复的
这个算法的思想比较简单,我们在做RMQ类问题时,有多次询问的那种,其实在这些询问中有很多都是问的同一段区间,即有的区间被询问的多次,所以我们对询问进行一个排序,假设上次询问我们得到了区间[l,r]
的值,那本次询问跟上次相比,多的我们加上即可,少的减掉即可。然后用到分块思想。
简言之,有的区间修改不支持lazy
标记(如区间开根号、取模、加减lowbit
),但是这些修改存在一些奇妙的性质,即每个元素的修改次数有一个上限。我们在每个节点上记录一个值,表示区间内元素是否达到修改上限。在修改时,若没有达到上限,则暴力递归到叶子节点。反之,使用lazy
标记或者直接return
。