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\) 的边界和细节。
B. Line Segments
简单结论题,考虑到在欧拉平面上,用 \(n\) 条线段连接两个点. 由于线端可以拐弯或者调头, 所以考虑连接终点与起点,然后选择所有线段中最长的一组线段,然后在上面依次连边,如果最长边的长度达于其他边的长度之和,那么不可能构成一个闭环图形.否则可以构成.
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\) ,所以此方案满足题意且字典序最小.

浙公网安备 33010602011771号