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

HDU 5381 The sum of gcd

时间:2015-08-13 22:30:36      阅读:576      评论:0      收藏:0      [点我收藏+]

标签:hdu   5381   the sum of gcd   

对于每个i,求出若干区间[l1,r1],[l2,r2],[l3,r3]...满足gcd(l1~i)~gcd(r1~i)一样,gcd(l2~i)~gcd(r2,i)一样...

则以i为右区间的所有gcd和为sum[i] = (r1 - l1 + 1) * g1 + (r2 - l2 + 1) * g2 + ...

同理求出i右边的一段段同gcd区间[l11,r11],[l22,r22],[l33,r33]...

然后将询问按左区间排序,int p初始设为1,对于p <= i < L,要消除i对所有前缀和的影响,只要[l11,r11]的sum[]减去g11,[l22,r22]的sum[]减去g22...

p = L

ans = [L,R]的sum和

求i的区间时,先保留i-1求出的区间,然后A[i]和每个区间的g求gcd,该合并的合并

(队友A的,就不贴他优雅的代码了, 红红火火恍恍惚惚)



版权声明:本文为博主原创文章,未经博主允许不得转载。

HDU 5381 The sum of gcd

标签:hdu   5381   the sum of gcd   

原文地址:http://blog.csdn.net/u012848726/article/details/47617819

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