ARC121
- 打UR去了,这里是补的题。
- A:简单取横纵坐标前 k k k大或小的点,两两配对即可, k k k可以随意取到3.
- B:如果全部颜色的个数都为偶数则答案为0,否则考虑 A , B A,B A,B为奇数, C C C为偶数,那么要么 ( A i , B j ) (A_i,B_j) (Ai,Bj),要么 ( A i , C k ) , ( B j , C l ) (A_i,C_{k}),(B_j,C_l) (Ai,Ck),(Bj,Cl)配对,绝对值最小值直接排序指针扫一下。一开始没有考虑到后一种爬了。
- C:考虑将 1 − n 1-n 1−n依次放到对应的位置上,不妨假设现在 a a a位于 x x x,且 x ≠ a x\neq a x=a,需要将它移动到 a a a上,那么如果当前奇偶性可以动 x − 1 x-1 x−1,那么显然可以直接连续移动到 a a a,否则就随便操作一个位置改变一下奇偶性(操作 a a a)。只有当最后三个位置出现 n − 2 , n , n − 1 n-2,n,n-1 n−2,n,n−1并且不能直接操作 n − 1 n-1 n−1时要微调。
- D:考虑如果只有1个当作和 0 0 0匹配,枚举新加入多少个 0 0 0,现在将新的序列两两匹配,并要求答案最小。进一步的我们可以发现如果将序列排序,那么匹配的区间两两相交,再进一步如果有 A ≤ B ≤ C ≤ D A\le B\le C\le D A≤B≤C≤D,那么如果有 ( A , C ) , ( B , D ) (A,C),(B,D) (A,C),(B,D),那么 ( A , D ) , ( B , C ) (A,D),(B,C) (A,D),(B,C)会更优,因此首尾依次匹配即可。
- E:考虑容斥,设 f [ x ] [ i ] f[x][i] f[x][i]表示 x x x子树内有 i i i个点存在祖先能到它,直接考虑 x x x是否放到子树内即可。
- F:一开始想了一些贪心策略,但是都不靠谱,还是树形DP好。简单的思路就是考虑一个子树内, o r 0 , a n d 1 or\ 0,and\ 1 or 0,and 1都是无效操作,只需要保留 a n d 0 , o r 1 and\ 0,or\ 1 and 0,or 1,即 f [ x ] [ 0 / 1 / 2 ] f[x][0/1/2] f[x][0/1/2]表示无有效儿子, a n d 0 and\ 0 and 0以及 o r 1 or\ 1 or 1。如果儿子两个都有则钦定顺序使得 o r 1 or\ 1 or 1在后面,然后讨论当前点以及它的父亲边的情况,有可能出现先与父亲合并再走子树的情况,转移即可。