Codeforces Round 649 (Div.2)

在这场好吓人的啊这评分, 为啥我觉得最后一题的评分是恶评啊.


$\text{[CF1364A]XXXXX}$

$\color{green}{\text{[EASY]}}$

这题好诈骗啊, 差点真的被骗到了.

注意到如果所有的数都是 $x$ 的倍数, 那一定是无解.

如果所有数的和不是 $x$ 的倍数, 那直接就是 $n$ .

否则一定要减去一个不为 $x$ 的倍数的数, 那就是从左边和从右边找到第一个不是 $x$ 的倍数的数, 比较哪个数删的更少.


$\text{[CF1364D]Ehab’s Last Corollary}$

$\color{green}{\text{[EASY]}}$

这题也挺诈骗的.

考虑 $dfs$ 树, 如果出现一条非树边, 那就直接判断环是否小于 $k$ .

如果没有小于 $k$ 的环, 就判断是否 $m = n-1$ , 是的话直接奇偶分层选多的那一层就好了.

不是的话, 必然有树深度大于等于 $k$ , 因为环长都至少为 $k+1$ , 所以选深度最大的点往根间隔染色即可.


$\text{[CF1364E]X-OR}$

$\color{green}{\text{[EASY]}}$

很显然的是找到 $0$ 的位置, 就可以获得其他所有数的位置.

那么问题就转化成了如何在较少的次数里找到 $0$ 的位置.

不难想到一件事, 拿三个数来比较.

如果 $query(a,b) \geqslant query(a,x)$ 且 $query(a,b) \geqslant query(b,x)$ 那么 $a$ 显然不可能是 $0$ .

我们可以枚举每个位置, 找到值最下的两个数, 里面必然有一个是 $0$ .

随机几个数来判断一下就能判断出哪个是 $0$ .