码迷,mamicode.com
首页 > 其他好文 > 详细

【BZOJ】5028

时间:2017-09-10 19:46:26      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:区间查询   区间   线段   数学   strong   线段树   个数   查询   问题   

【算法】数学+线段树/树状数组

【题解】这题的问题在线段树维护gcd只能支持修改成一个数,不支持加一个数。

套路:gcd(a,b,c,d,e)=gcd(a-b,b-c,c-d,d-e,e),也就是所有数的gcd可以转化为所有差值和最后一个数的gcd

那么只需要查询区间差值gcd和一个数。

对于区间差值gcd查询,区间加数只会导致两个单位的差值变化,所以可以用线段树单点修改区间查询gcd。

对于一个数查询,就用树状数组维护区间加值和单点查询就行了。

【BZOJ】5028

标签:区间查询   区间   线段   数学   strong   线段树   个数   查询   问题   

原文地址:http://www.cnblogs.com/onioncyc/p/7501859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!