Codeforces1393 题解(A-D)

AC代码

A. Rainbow Dash, Fluttershy and Chess Coloring

可以推导出\(f_1 = 1, f_2 = 2, ..., f_n = f_{n - 2} + 1\)

然后就可以推出\(ans = \lfloor \frac{n + 2}{2} \rfloor\)

B. Applejack and Storages

记录\(x\)出现的次数,以及分别记录出现次数大于等于\(2, 4, 6, 8\)\(x\)的个数,以此记为\(ge2, ge4, ge6, ge8\)

当且仅当\(ge8 \ge 1\),或者\(ge6 \ge 1 \text{ and } ge2 \ge 2\),或者\(ge4 \ge 2\),或者\(ge4 \ge 1 \text{ and } ge2 \ge 3\)时,答案为YES。

C. Pinkie Pie Eats Patty-cakes

贪心的将出现次数最多的数字尽可能地分散即可。

D. Rarity and New Dress

这题可以用dp做。

首先,通过观察可以得到一个格子对答案的贡献等于以这个格子为中心的最大目标图形的半径长度。但是获取这个半径是很难的。

不过,一个目标图形可以由4个以这个格子为顶点的等腰直角三角形拼接得到,并且4个最大直角边长度中的最小值就是当前格子对答案的贡献。用dp可以很容易的维护一个方向上的最大直角边长度。

所以,只需要用4次dp来获取4个方向上的最大直角边边长,最后再取4个中的最小值,得到的值就是一个格子对答案的贡献。

所有格子贡献之和即为答案。

E1. Twilight and Ancient Scroll (easier version)

题目都看不懂,提前溜了。

posted @ 2020-08-08 00:58  _Backl1ght  阅读(660)  评论(2编辑  收藏  举报