关于一个神秘假做法(不是退火)过了 AtCoder 的题
查看原帖
关于一个神秘假做法(不是退火)过了 AtCoder 的题
532560
Tang_chao楼主2025/6/15 13:45

Task: ABC141F

题意:给定 nn 个非负整数 xix_i,将它们分成两组。记其中一组异或和为 aa,另一组异或和为 bb,求 a+ba+b 的最大值。

考虑线性基。

sum=xisum = \sum x_i,求出 aa 的最大值,答案即为 a+(suma)a+(sum \oplus a),其中 \oplus 为异或运算。

机智的 AtCoder 把它卡掉了。但是机智的我想到,真正的最优解应该和 a+(suma)a+(sum \oplus a) 相差不远。所以我们考虑更改 aa 中的最多一个数

正式地,计算出 max{(axi)+(sumaxi)}\max\{(a \oplus x_i) + (sum \oplus a \oplus x_i)\}

机智的 AtCoder 又把它卡掉了。但是机智的我又想到,能卡掉它的数据绝大概率是手搓的,nn 不会很大。于是我拼上了 O(n2n)O(n2^n) 暴力。

它过了。

AC Code

抽象。

2025/6/15 13:45
加载中...