Atcoder ARC121 题解

ARC121 题解

这一场相对于其他的场不是很难, 都有自己做出来的可能, 虽然我不会做

A

直接分别按照 \(x\) , \(y\) 坐标排序之后, 选前两大和前两小的, 分别做一下取次小值就好了。 这样就不用分类讨论了

B

乍一眼看以为只要在两个奇数大小中, 选出两个差最小的情况就可以。 但是这只是其中一种情况, 还有可能就是从一个偶数中选出两个, 分别和两个奇数中的匹配, 做一个归并排序就好了

C

不知道为什么会有人没做出来?

直接找到一个可以交换的交换就好了, 如果没有就交换第一个/或者是是逆序对增量最少的一个

D

比较厉害的题目。

一开始我看错了题, 以为是每次都要选两个, 那么这样的话, 在 \(n\) 是偶数的时候, 那就最大的配对最小的, 次大的配对次小的, 这样子一定最优。 但是在这个题里面可以选出1个而不是两个, 发现选1个和选一个0和一个数是一样的, 那么我们可以枚举加入多少个0, 对所有情况求答案最小值就行。

E

比D简单, 容斥原理 + DP就可以了

F

首先观察, 如果有一个叶子的权值是1, 并且是 or 边的话, 那么只需要把这个边最后操作, 一定是合法的

那并不存在这样的叶子话, 分类讨论一下

  • 一个1的叶子和and边, 操作这条边不会对答案造成影响, 可以去掉
  • 一个0的叶子和or边, 同上
  • 一个0的叶子和and边, 会使上面的边变为0, 如果操作了这一条边之后合法, 那么原树一定合法。 所以我们可以操作这条边。
上一篇:AtCoder Beginner Contest 182 F


下一篇:AtCoder Beginner Contest 216