Codeforces Round 1075 (Div. 2) VP 记录

补题

C2

容易发现如果 \(n = 2^k\) 一定无解。

先回顾一下 C1 怎么构造的,\(p_n = 1\),然后按照 \(p_{2k} = 2k + 1\)\(p_{2k+1} = 2k\) 构造,最后可得当 \(n\) 为奇数时 \(p_1 = n-1\),当 \(n\) 为偶数时,\(p_1 = n\)

然后对于 C2,显然如果 \(n\) 是奇数按照 C1 那样去构造就是对的。

如果 \(n\) 是偶数,记 \(\mathrm{lowbit}(n) = k\),我们交换 \(p_1 = n\)\(p_k = k + 1\),此时其它数不受影响。

对于现在的 \(p_1\)\(p_1 \oplus 1 = (k+1) \oplus 1 = k = p_{k+1}\),满足要求。

对于现在的 \(p_k\)\(p_k \oplus k = n \oplus k = n - k = p_{n - k + 1}\),因为 \(k < \frac{n}{2}\),所以 \(n - k + 1 > k\),满足要求。

然后就成立完了。

D1

首先你要知道一个 \(\color{red}\text{trick}\),一个排列的区间 \(\mathrm{mex}\) 等于前后缀最小值。结论很好证,但是如果没见过的话很难想到。

然后就好做了,因为是最小值我们考虑从大(\(n - 1\))到小(\(0\))填进去,我们就以 \(n - 1\) 举例,如果 \(w_{n-1} = 1\),那么我们必须要填最左边或最右边,否则 \(n-1\) 一定不是前后缀最小值。同理,如果 \(w_{n-1} = 0\),那么我们一定不能填最左边和最右边,最后乘法原理搞一下,非常容易。

D2

这个也很水吧,如果不考虑整除条件有显然贪心策略,然后我们考虑被 \(c\) 整除。

如果最优答案本来就不被整除那么直接输出。

容易发现我们只能改动质因数 \(2\) 的次数,那么我们一共需要改 \(v(x) - v(c) + 1\) 次,其中 \(v(x)\) 表示 \(x\) 中质因数 \(2\) 的个数。

显然改代价最小的就行。

E

这个题不配吧。

非常容易发现答案转换成求操作次数最小,然后注意细节分讨真就没了吧。

魔怔。

反思

没做出 D1 我的问题,之前记了这个 trick 的结果记错了。

得加训构造题了。

posted @ 2026-02-02 13:33  Statax  阅读(11)  评论(1)    收藏  举报