11.20题解

A. 卡牌

场上只想出来 60 的部分分。

去想那额外的十分暴力,发现可以做一个线性基。这启发我们是否可以从线性基的角度去解决这道问题。

我把 a 和 b 拼起来,比如以 (a << 20 | b) 的形式插入线性基中。肯定不能暴力枚举所有组合情况,\(O(2^{40})\) 是不可接受的。

我们可以去枚举一部分,比如我枚举 a 的最终情况,那我会得到相对应的 b 的情况。我们可以继续尝试选那些位数小于等于 20 的那些线性基里的数,这样贪心的让 b 最大。

我的理解是线性基里的那个数本质是一堆数异或起来得到了,我选择这个数就意味着我选了那一堆数,而如果前面的部分是 0 了,就意味着我选了一堆数使得这些数的异或和为 0 了。

posted @ 2025-11-22 10:09  yanbinmu  阅读(3)  评论(0)    收藏  举报