这场 ARC 比较考验观察能力
C - Circular Addition
收获的思路
- 在差分数组上看区间加减
- 问最小操作次数时
找几个下界, 尝试证明其最大值可以取到, 证明时可以尝试把创造过程逆转为消除过程。 因为消除时的信息更多, 而创造是在, 创造“ 信息” 。
我看到了第一个切入点
然后我发现过不了最后一个样例
按照题解来讲的话
实际应用中
- 观察总结此前得到的事实
提出猜想, - 代入样例
若有误返回1, - 尝试证明
若证伪返回1, - 如果证明或不会证而自信
开码, - 如果没证出来且不太自信
多造点样例, 再次手玩或对拍, 若有误返回1, 否则开码,
按照步骤
- $L_1<L_2$
此时数组中不可能有 0: 否则为了从 0 增加到 $L_2$, 差分数组中正值部分至少是 $L_2$, 这与 $L_1<L_2$ 矛盾, 于是全体 -1 即可。 这样能使 $L_2$ 减小 1, 。 - $L_1>L_2$
如果数组中有 0: 我们只要挑选一段包含最大值的极大非零区间来全体 -1, 这样能使 $L_1$ 减小 1, 如果数组中没有 0。 数组中一定有若干, 山谷“ ” 所以一定可以找一段极大的, 连续最大值区间“ ” 要求其左右不再是最大值( 来减 1) 这能使 $L_1$ 减小 1, 。 - $L_1=L_2$
如果数组中有 0: 一定是单调增加到 $L_2$ 再单调减小到 0, 将非零部分 -1 即可同时减小 $L_1$ 和 $L_2$, 如果数组中没有0。 数组中一定有若干, 山谷“ ” 如果*极大的。 连续最大值区间“ *唯一” 那么将其减 1 即可, 否则。 一定可以找到一个区间覆盖所有的最大值, 例如除去最小值后获得的区间, 将这个区间全体减 1 即可。 。
把这个过程反过来想会变得更难想
D - Without Carry
收获
推荐博文
读完博文直接就会做了
E - Non-coprime DAG
收获我观察能力低下
- 不够耐心
一条思路还没想透彻就放弃, - 可以把结论写出来
更容易发现规律, 形式的不同会影响思考方式,
在看题解之前
对 $i<j$
- $i\equiv 0,\;j\equiv 0$
此时一定可达, 。 - $i\equiv 0,\;j\equiv 1$
此时来到了第一个重要观察, 可以尝试经过 $j - f(j)$ 这一偶数到达 $j$: 所以不超过 $j-f(j)$ 的偶数都 ok, 即要求$i\leq j-f(j)$, 而比它大的偶数。 和 $j$ 的差距已经小于其最小质因子了, 没有机会走到 $j$ 了, 。 - $i\equiv 1,\;j\equiv 0$
类似于 2, 要求$i+f(i)\leq j$, 。 - $i\equiv 1,\; j\equiv 1$
此时来到了第二个重要观察, 也是我卡住的地方, 由于我没有将上面的观察列出来。 我并没有注意经过偶数到达奇数这条路, 或者隐约觉得这效率低下, 其实这个类比还是比较明显的。 大脑好用时起码可以猜一个结论出来, 先写结论。 $i+f(i)\leq j-f(j)$ 即可: 首先。 两者都是奇数, 这就决定了只加一个, 一定为奇的( 质因数并不能使 $i$ 到达 $j$) 至少要加 2 个, 如果想由偶数搭桥。 显然, i -> i+f(i) -> j-f(j) -> j
的路径就是最优的 如果不这样做。 要么 $i,j$ 有公因子, 此时 $i+f(i)\leq j-f(j)$ 必成立( 或者仍然可以理解为从偶数搭桥, ) 要么还是需要转到 $j-fac(j)$ 再转到 $j$, 其中 $fac(j)$ 是 $j$ 的某个因子, 而这一个转变最少也要加 $f(i)$。 转变后最少也要再加 $f(j)$ 到达 $j$, 本质还是从偶数搭桥, 。
现在我们获得了
- $i+1\leq j$
- $i+1\leq j-f(j)+1$
- $i+f(i)\leq j$
- $i+f(i)\leq j-f(j)+1$
可以总结为
$i$ 可达 $j$ $\Leftrightarrow$ $up(i)\leq low(j)$
再次总结这个表达