Loading... 一个更加牛逼的名字:Daiwa Securities Co. Ltd. Programming Contest 2021(AtCoder Regular Contest 128) ARC好神啊,打不动 /kk /wq (快去刷圣遗物) ## A 想想什么时候要把 Gold 换成 Silver。假如现在有 $x$ 的 Gold,先在第 $i$ 天换成 Silver,再在第 $j$ 天换成 Gold。那么要使 Gold 越来越多,就是要满足:$\frac{A_i}{A_j} > 1, A_j \neq 0$, 也就是 $A_i > A_j$ 现在看来这个 $j$ 要通过枚举确定,可是 $O(n^2)$ 过不了。想想这个第 $j$ 天能不能确定,假如 $j > i + 1$,那么在 $(i, j)$ 这一段时间内的不操作可能不优,因为可能哪一天 Silver 兑 Gold 大涨,然后再兑 Silver 的再跌回去。所以 $i \leq j \leq i + 1, i \neq j$,所以 $j = i + 1$ 然后只需要判断 $A_{i + 1} > A_i$ 即可。 ## B 啊....这个结论题。WA 了两发。 实际上发现,我们可以这样操作。假如我们只操作 $R$ 球和 $G$ 球,最终只剩下 $B$ 球。不是一般性,假设 $R \geq G$,没有操作可以使 $R - G \mod {3}$ 的值改变。那么应该要满足 $R \equiv G \mod {3}$。因为操作如下: 1. 把一个 $R$ 球和一个 $G$ 球换成 $B$ 球,共 $G$ 次。 2. 把一个 $B$ 球和一个$R$ 球换成 $G$ 球。 3. 把一个 $R$ 球和一个 $G$ 球换成 $B$ 球。 4. 把一个 $R$ 球和一个 $G$ 球换成 $B$ 球。 这样一共是 $R$ 次操作。 类似地,对最终全部换成 $G$ 球和 $R$ 球的做一遍同样的步骤,比较最小操作数即可。 ## C [Sol](https://atcoder.jp/contests/arc128/editorial/2791) 结论:前面一段全零,后面一段就是后缀平均数。正面看上面,不太想证....(~~不会证~~ ## D 首先可以发现,若 $A_i = A_{i+1}$,那么 $(i,i+1)$ 这两个球一定永远都不会被消掉。 假设 $A_i \neq A_{i+1}$,我们强制我们要消到只剩第 $1$ 个和第 $n$ 个球,在 $n = 2,3$ 的时候情况平凡,可以手玩。 当 $n \geq 3$ 的时候,充要条件是不同的 $A_i$ 数目 $\geq 3$。下面使用归纳法证明: 假设 $n = k$ 时成立,若要 $n = k + 1$ 成立,则: $\because |\{A_i\}| \geq 3$ $\therefore \exists i \in [2, n)\ s.t. A_{i-1} A_{i}A_{i+1}$ 不同 若此时删掉 $A_i$,此时仍然存在 $3$ 种以上的不同颜色。 否则,$A$ 应有此种形式:$A=(x,y,x,y,A_i,x,y,\dots, x, y)$ ,这样每次消去 $y$,仍然存在 $3$ 种以上的颜色。故成立。 所以设 $f_i$ 表示消到 $i$ 的方案数,若 $(A_i, \dots, A_j)$ 满足上述条件,则可以转移 $i \to j$。前缀和优化即可,复杂度 $O(n)$。 ## E 待落实 ## F 待落实 最后修改:2021 年 10 月 26 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏
1 条评论
真好呢