CF1798C题解

首先考虑贪心,即为怎样能使价签数最小。

我们从前往后扫,判断我们扫到的下标是否能和前面的区间合并,这样的结果一定是最优的。

为什么?

因为我们每次把一个新数加入原有集合,就相当于对下一次加入这个集合的数加了“限制”(看了下文你自然会懂),我们若不按从前往后的顺序扫,那么这个数就会影响我下一个新的集合,所以不如从前往后扫更优。

接下来考虑怎么去扫。

如果想让两个 \(c1\)\(c2\) 相等,那么肯定要让 \(c1\)\(c2\) 分别除以 \(b1\)\(b2\) 的值为整数,即为 \(b1\)\(b2\) 的公倍数。显然我们知道若想合法则这个公倍数越小越好,也即是我们的 \(c\) 应为 \(b1\)\(b2\) 的最小公倍数。同时应该满足 \(a1\)\(a2\) 分别除以 $\frac{c}{b1} \(,\)\frac{c}{b2} $ 的值为整数。那么在从前往后扫的过程中,即为在 \(\forall i\in\left [l ,r\right ]\),$\gcd (a_{i}\times b_{i}) \operatorname{mod}\operatorname{lcm}b_{i} $ 的情况下,才存在一个相同的 \(c\) 值使其合法。

posted @ 2023-06-06 18:09  Pwtking  阅读(16)  评论(0)    收藏  举报