$\mathcal{CF1089 C2}$

problem

给定长度为 \(n\) 的序列 \(\{a_i\}\)\(\{b_i\}\)

一次合法操作定义为:

  • 保证所有的 \(\gcd[l, r]\) 不变的前提下

  • \(a_i \to m, m\in [1,b_i]\) 且 $ m\neq a_i$

对于每个 \(i\) 最多操作一次,最多操作次数?

\(n\leq 5\times 10^4\)\(a_i,b_i\leq 10^9\)

solution

容易发现,为了保证区间 \(\gcd\) 都不变,则只需保证所有的 \(\gcd(a_i,a_{i-1})\) 不变

单独讨论 \(a_i\),需要保证 \(\gcd(a_i,a_{i-1})\)\(\gcd(a_i,a_{i+1})\) 不变,因此 \(a_i\) 最小变为 \(\text{lcm} (\gcd(a_i,a_{i-1}),\gcd(a_i,a_{i+1}))\)

\(a_i\) 变化后,必须既包括 \(\gcd(a_i,a_{i-1})\) 的质因子,又包括 \(\gcd(a_i,a_{i+1})\) 的质因子,两个数的质因子取并集,即为两个数的 \(\text{lcm}\)

此时便有了 C1 的解法,只需讨论 \(\text{lcm}\) 是否小于 \(a_i\) 即可,因为 \(a_i = b_i\)

C2 去除了 \(a_i=b_i\) 的条件,会有怎样的影响?

将上述结论形式化:当且仅当 \(\text{lcm} \leq b_i\)\(\text{lcm} \neq a_i\) 时,\(a_i\) 可以被操作变小;也就是 \(\text{lcm} > b_i\)\(\text{lcm} = a_i\) 时,\(a_i\) 不可以被操作变小

\(\text{lcm} > b_i\) 时,\(a_i\) 一定无法改变,因为 \(\text{lcm}\) 已经是 \(a_i\) 在不改变 \(\gcd\) 的情况下,所能变化的最小值了,而最小值都不在 \([1,b_i]\) 的范围内,更不用说别的可变化的值了,因此只能不变

那么,只剩 \(\text{lcm} \leq b_i\)\(\text{lcm} = a_i\) 的情况了,这种情况观察样例可以得知,可以将 \(a_i\) 变大,能依旧满足 \(\gcd\) 不变的条件,只不过变大有限制

首先,变大一定为原来 \(a_i\) 的倍数,若考虑将 \(a_i\times k\)\(k\) 需要满足怎样的条件,才能让 \(\gcd\) 不变?

\(k\)\(\frac{a_{i-1}}{\gcd(a_i,a_{i-1})}\)\(\frac{a_{i+1}}{\gcd(a_i,a_{i+1})}\) 都互质,也就是说 \(k\) 中不能包含原来 \(a_{i-1}\)\(a_{i+1}\) 区别于 \(a_i\) 独有的质因子,那其实讨论 \(k\) 是合数就没必要了,\(k\) 是质数也能取得同样的效果

所以,考虑将 \(a_i\times p\)\(p\) 不为 \(\frac{a_{i-1}}{\gcd(a_i,a_{i-1})}\)\(\frac{a_{i+1}}{\gcd(a_i,a_{i+1})}\) 的质因子,也就是不为 \(\text{lcm}(\frac{a_{i-1}}{\gcd(a_i,a_{i-1})}, \frac{a_{i+1}}{\gcd(a_i,a_{i+1})})\) 的质因子,这个数最大为 \(10^{18}\),最多会有 \(19\) 个不同的质因子,所以 \(p\) 可以只考虑前 \(20\) 个质数

\(p\) 值缩小到这个范围,就可以 dp 了

定义 \(f_{i,j}\) 表示考虑完前 \(i\) 个数,\(a_i\) 乘上了 \(p_j\)(特别的,\(p_0=1\),即不变),转移就很简单了

\[f_{i,j}=\max_{k=0}^{20}\{f_{i-1,k}+[j\neq0]\} \]

转移保证的条件还是挺多的:

  • \(a_i\times p_j \leq b_i\)

  • \(a_{i-1}\times p_k \leq b_{i-1}\)

  • \(\gcd(p_j,\frac{a_{i-1}\times p_k}{\gcd(a_i,a_{i-1})})=1\)

  • \(\gcd(p_k,\frac{a_{i}\times p_j}{\gcd(a_i,a_{i-1})})=1\)

然后就没有啥了,怎么处理都行,可以先将所有能变小的 \(a_i\) 都变小了,再去 dp 变大的,也可以在 dp 里面变小,时间复杂度是 \(\mathcal{O}(nL^2\log(a_i^2))\) 的,官方题解说还能有更优秀的做法...

posted @ 2026-04-01 16:44  Rubyonlу  阅读(6)  评论(0)    收藏  举报