Codeforces Round 1057 (Div 2)

2153A Circle of Apple Trees

奶龙。
答案是 $b$ 中不同元素的个数。
Contest Submission

2153B Bitwise Reversion

这题很有意思,显然你可以一位一位枚举看看合不合法,因为每一位都不互相影响。
但是!我们考虑 YES 的必要条件: $ \def\and{\operatorname{and}} x \and y = y \and z = z \and x $,这很好理解。
现在我告诉你,这是充要条件。
先用显然的证法——构造。令 $a=0$,那么 $b=x$,$c=z$,所以 $ b \operatorname{and} c = y $ 即 $ x \operatorname{and} z = y$。对吧。
然后我们来好好证明:对于每一二进制位,不能是 $x,y,z$ 中只有一个为 $1$。因为有一个 $1$ 必然 $a,b,c$ 中有一个 $1$,所以 $x,y,z$ 中至少有两个 $1$。$\newcommand{\qed}{\text{Q.E.D.}} \qed$
Contest Submission

2153C Symmetrical Polygons

显然选偶数条相同边,然后最多选 $2$ 条奇数边。注意判断是否满足多边形条件。
Contest Submission

2153D Not Alone

这题真得太好了!

这题就是转化为将序列变成部分相等的小块。
我们令 取 $x$ 个 表示为这相邻的 $x$ 个数都变成相等的所需最小代价。

观察:

  1. 取 $3$ 个一定优于取 $2$ 个,取 $2$ 个一定优于取 $4$ 个,取 $4+n$ 个一定优于取 $5+n$ 个 $(n \in \N)$。
  2. 当 $ n \bmod 3 \neq 0 $ 的时候,不能一直取 $3$ 个(不然有可能满足不了条件),于是考虑在 取$3$ 和 取$2$ 中选最佳值。
    于是我们就得到了一个线性的 DP 式子:$f_i = \min( f_{i-2} + |a_i-a_{i-1}|, f_{i-3} + \max\{ a_i, a_{i-1}, a_{i-2} \} - \min\{ a_i, a_{i-1}, a_{i-2} \} )$。

考虑到这题需要 破环成链,我们 DP 最多从 $3$ 个状态前转移,所以设置循环 $3$ 次,结果取 $\min$。
Practice Submission