赛时只打了 ABCE,D 没调出来,还是太菜了
A
一眼秒掉答案为 max (0LL, r / k - l + 1)
[record](https://codeforces.com/contest/2029/submission/290705642)
B
注意到只需维护 0 和 1 的个数即可
[record](https://codeforces.com/contest/2029/submission/290720633)
C
先枚举 $r$,考虑从哪里开始 skip,显然 skip 后的分数越大越不劣。
先求出从每个位置为 $r$,最大的分数,接着问题转化为对于 $i\in [2, n]$,已知到 $i$ 时 rating 为 x,求最终 rating。
这样还是会超时,继续使用上面的性质:对于同一个位置,分数越大越不劣。于是可以同时维护所有,每到一个位置取一下 $\max$ 即可。
[record](https://codeforces.com/contest/2029/submission/290730787)
D
显然对于每一个点 $u$,如果度数 >= 2,可以随便取出两个它能到的点 $x$ $y$,然后执行 $u$ $x$ $y$。
不难发现,每次取出度数最大的点进行次操作,最终所有点的度数都 $\leq 1$,此时的图由一些单点和长度为 $2$ 的链构成。
如果只有单点那么可以直接输出答案,如果有链,每次随便断一条边,再找一个新的 点/链 加进来即可。
[record](https://codeforces.com/contest/2029/submission/290791528)
E
观察到偶数总有因数 $2$,所以小的偶数一定能转移到大的偶数,那么奇数呢?
观察到奇数不可能有偶数因子,所以奇数进行一步操作后会变回偶数,显然变的偶数越小越优,因为这样可以转移到更多的偶数。
所以说对于每一个奇数 $a_i$,如果选择的 $x$ 不是 $a_i$,
我们可以考虑先将 $x$ 变为偶数(如果它是奇数),然后再进行若干次 $+2$ 得到另一个偶数,最后再一次操作变为奇数。
这就启发我们对于每个奇数 $y$,预处理最大能一步到它的偶数。
对于某种奇数,没有偶数能一步到它,那么 $x$ 只能设为这个奇数,然后枚举一下因数看看 $x$ 能到的最小偶数是谁。
如果有超过两个这种奇数,答案显然为 $-1$。否则答案可以为 $2$。
[record](https://codeforces.com/contest/2029/submission/290748679)