首页 > 其他分享 >[CERC2019] Be Geeks!

[CERC2019] Be Geeks!

时间:2024-04-10 21:22:33浏览次数:25  
标签:log max Geeks 区间 CERC2019 gcd

非常有意思的一道题

这道题让我们求区间gcd乘max。如果只有max的话那非常好求,加进来个gcd就非常棘手。考虑对于一个数\(a_{i}\),他所在的最大值区间为[l,r],那么有一个经典的结论,一个数的因数大约有\(\log V\)个,那这样我们就可以将[l,i]和[i,r]拆成gcd相同的几个区间,这些区间的数量大约为\(\log V\)个,那么将其暴力枚举,再计算贡献,就是这两段区间的gcd的gcd,乘上两段区间的积,再乘上\(a_{i}\)。那怎么枚举这些区间呢,这个可以二分,二分出当前区间第一个往后最远的gcd相同的地方,那怎么快速求区间gcd和呢,我们可以使用st表,然后就做完了,代码实现起来不烦。

标签:log,max,Geeks,区间,CERC2019,gcd
From: https://www.cnblogs.com/wuhupai/p/18127483

相关文章

  • P9612 [CERC2019] Light Emitting Hindenburg 题解
    题目传送门题目大意这个题目简化一下就是求\(n\)个数中取\(k\)个数按位与的最大值思路很容易想到贪心。题中说道输入的数在二进制下最多\(29\)位,所以我们从\(29\)开始遍历二进制位,如果当前位有大于等于\(k\)个\(1\),那么标记一下这些数,可以发现剩下的比当前位低的......