杂题记录
随机做题过程中遇到感觉还不错的题就会记录下来,随缘更新
CF360B Levko and Array
考虑二分答案 \(x\) 后用 dp 检验
设 \(dp_i\) 为钦定 \(a_i\) 不会改变后,在 \(i\) 之前有多少数字可以不改变位置,有转移方程
\[dp_i = \max\limits_{j < i \;\and\;|a_i - a_j| \leq (i - j)\times x}\{dp_j + 1\}
\]
若有 \(dp_i + k \ge n\) 则成立
gym104466C Cosmic Commute
首先 BFS 计算出任意一点 \(i\) 到终点的距离 \(ed_i\) 和到起点的距离 \(st_i\) ,考虑不用传送,显然最终答案为 \(st_n\)
考虑可以传送的特殊点 \(u\),其到达终点的期望距离应当为 \(\frac{1}{k - 1} \times \sum\limits_{v \in S, v \ne u}(st_u + ed_v)\) ,我们将其记作 \(dis_u\)
易得最终答案为 \(\min\limits_{u \in S}(st_n, dis_u)\)
CF1614D2 Divan and Kostomuksha (hard version)
显然做法与值域相关,令 \(cnt_i\) 为序列中含有因子 \(i\) 的数字的个数, \(prime_i\) 为第 \(i\) 小的质数,\(A\) 为值域上界
设 \(dp_i\) 为 \(\gcd\) 以 \(i\) 结尾的序列的最大权值,有转移方程
\[dp_i = \max_\limits{i \times prime_j \le A} \{dp_{i \times prime_j} + (cnt_i - cnt_{i\times prime_j}) \times i\}
\]
其中一个有效优化为初始时只统计 \(cnt_{a_i}\) ,后倒叙枚举,令 \(cnt_{x} = \sum_\limits{x|y \; \and \frac{y}{x} 为素数 }cnt_{y}\)