$\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\),即不变),转移就很简单了
转移保证的条件还是挺多的:
-
\(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))\) 的,官方题解说还能有更优秀的做法...

浙公网安备 33010602011771号