CF 1035(Div.2) VP记录

Codeforces Round 1035 (Div. 2) VP记录

A. Add or XOR

考虑,只有当操作为 \(XOR\)\(a\) 的末位为 \(1\) 时,\(a\) 才有可能减 \(1\)

所以,如果 \(a > b+1\) 时一定不可能达成。

那么,在 \(a<b\) 时,当 ADD 的开销小于 XOR 的开销的时候,直接加1加到 \(b\) 一定更优。

但是,当 ADD 的开销大于 XOR 的开销的时候,能用XOR一定优先用XOR操作更优。

可是,当 \(a\) 的末位为0时,XOR操作才可能加1,所以要注意特殊情况。

最后,注意 \(a\)\(b\) 的边界和细节。

AC code

B. Line Segments

简单结论题,考虑到在欧拉平面上,用 \(n\) 条线段连接两个点. 由于线端可以拐弯或者调头, 所以考虑连接终点与起点,然后选择所有线段中最长的一组线段,然后在上面依次连边,如果最长边的长度达于其他边的长度之和,那么不可能构成一个闭环图形.否则可以构成.

AC code

C. Leftmost Below

考虑到 \(n\) 是奇数时,只要令 \(a_1=a_2=a_3=...=a_n=l\) 即可保证 \(a_1 \, \& \, a_2 \, \& \, \ldots \, \& \, a_n = a_1 \oplus a_2 \oplus \ldots \oplus a_n=l\) 成立.

考虑到对于任何\(a_1\) , \(a_1 \& a_1 \& a_1 \&\ldots\& a_1=a_1\)总是成立.

又对于\(\overbrace{a_1 \oplus a_1 \oplus a_1 \oplus \ldots \oplus a_1}^{偶数个a_1}=0\) 总是成立.

所以可以推出 \(a_1 \, \& \, a_2 \, \& \, \ldots \, \& \, a_n = a_1 \oplus a_2 \oplus \ldots \oplus a_n=0\) 的答案可行, 下面考虑构造最优的答案.

由于 \(a\) 有偶数个,所以对于 \(\oplus\) 操作可以分成 \(n-2\) 个和 \(2\) 个进行操作. 其中只需要保证前 \(n-2\) 个 和 后 \(2\) 个数值相同即可令 \(a_1 \oplus a_2 \oplus \ldots \oplus a_n=0\)

考虑到 \(\&\) 的情况,完全可以让 \(a_{n-2} \& a_{n-1}=0\) 就可以保证 \(a_1 \, \& \, a_2 \, \& \, \ldots \, \& \, a_n=0\)

所以,对于一 \(l\) 而言,它是最高位为1的情况下的最小值,想要找到最小的 \(a_{n-2} \& a_{n-1}=0\) 可以考虑将 \(a_{n-1}\) 进位.

如果 \(a_{n-2}=01010001011\)
那么 \(a_{n-1}=10000000000\)

即可满足条件,设 \(x=a_{n-1}\)

所以我们在前 \(a_{n-2}\) 项取 \(l\) 可以保证字典序在前 \(n-2\) 项最小,又因为字典序在取最后两项时取了最小的 \(x\) ,所以此方案满足题意且字典序最小.

AC code

posted @ 2025-08-22 20:12  allenyuan9038074  阅读(15)  评论(0)    收藏  举报