BZOJ5028
Posted ONION_CYC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ5028相关的知识,希望对你有一定的参考价值。
【算法】数学+线段树/树状数组
【题解】这题的问题在线段树维护gcd只能支持修改成一个数,不支持加一个数。
套路:gcd(a,b,c,d,e)=gcd(a-b,b-c,c-d,d-e,e),也就是所有数的gcd可以转化为所有差值和最后一个数的gcd。
那么只需要查询区间差值gcd和一个数。
对于区间差值gcd查询,区间加数只会导致两个单位的差值变化,所以可以用线段树单点修改区间查询gcd。
对于一个数查询,就用树状数组维护区间加值和单点查询就行了。
以上是关于BZOJ5028的主要内容,如果未能解决你的问题,请参考以下文章