比赛:ARC205 Div.2
ARC205 Div.2
A - 2x2 Erasing
若每次操作都选择左上角的进行反转,容易看出存在一种操作顺序,使得每次操作只会减少一个四宫格数量,因此只需二维前缀和,统计有多少个四宫格即可。
Code
B - Triangle Toggle
无论怎样操作,每个点的黑边度数
因此每个点最终黑边度数最大是
如果一个点的白边度数
Code
C - No Collision Moves
无解情况:
- 两个不同方向的线段相交。
- 有线段包含关系。
判完无解之后直接贪心操作即可。
Code
D - Non-Ancestor Matching
自底向上贪心。
维护子树内空置点数,以及匹配数。
按顺序合并子树的时候,
- 之前子树的空置点和当前子树空置点匹配。
- 之前空置点和当前已匹配的两个点匹配。
- 之前已匹配的两个点和当前空置点匹配。
容易证明这是最优的。因为最终树内要么只剩一个空置点,这时候已经达到答案上界了;要么剩下的空置点两两都存在祖先关系,并且除了最底下的空置点可能存在非祖先关系节点外,其他空置点都和树上所有点存在祖先关系。
Code
E - Subset Product Problem
考虑暴力,就是相当于做
对于这个动态高维前缀和,发现我们加入一个数的复杂度为
于是为了平衡复杂度,考虑根号分治。维护
这样每次加入一个数复杂度为
Code