[CF1463B] Find The Array
考虑构造出一种情况 bi,bi+1 之间的约束条件永真,一个自然的想法是令 bi 为 2 的幂。
既然是 2 的幂次,那就让每一个绝对值里的值尽可能小,所以这里找 k 使得 2k≤ai<2k+1。
此时 2∑∣ai−bi∣=∑(2ai−2k+1)<∑ai=S。
题解给出了另一种方法,既然想让这个约束条件永真,只要相邻两个元素有一个 1 也能满足这一点,自然另一个就填对应的 ai。
然后,2∑i=odd(ai−1)+2∑i=even(ai−1)=2S−2n,所以一定有一个值 ≤S−n<S。
AC Code。
[CF1366D] Two Divisors
首先,(d1,d2)∣d1+d2,所以 (d1,d2)=1 是 (d1+d2,ai)=1 成立的必要条件。
进一步地,从算术基本定理的角度考虑,把 ai 分解后变成 p1k1p2k2…pmkm。
显然 m=1 时,任意一个非 1 的因子 d 都满足 p1∣d,不可能找到 d1,d2 满足 d1⊥d2。
当 m≥2 时,我们需要找到 d1,d2 满足 d1⊥d2 并且 ∀1≤j≤m,pj∣d1+d2。
当 pj∣d1 时,pj∣d1+d2 成立当且仅当 pj∣d2,而又因为 d1⊥d2 得知这是不可能的。
因此这就给出了一个构造方法,让每一个 pj 都是 d1 或 d2 的因子即可。
AC Code。