这道题的解法:贪心+线性基。
没有学过线性基?我的学习笔记传送门
由于线性基有一个优秀的性质:无论一个序列的线性基怎么变,其线性基内数的个数都是相同的,关键是看你怎么排列数的顺序,那么我们可以贪心。
考虑将所有石头按照魔力值从大到小排序,然后直接做线性基,能插入的数就加上其魔力值。
对于正确性证明:如果你对于线性基上面这个性质学过证明的话,这个是真的非常好证明的(甚至不用证)。
这里简要证明一下:
假设我们现在有一组线性基 d 1 , d 2 , . . . , d k d_1,d_2,...,d_k d1,d2,...,dk,现在要插入 x x x,而 x x x 插入失败。
这说明 d a 1 ⊕ d a 2 ⊕ . . . ⊕ d a j = x d_{a_1} \oplus d_{a_2} \oplus ... \oplus d_{a_j}=x da1⊕da2⊕...⊕daj=x。
根据异或的性质: x ⊕ d a 1 ⊕ . . . ⊕ d a j − 1 = d a j x \oplus d_{a_1} \oplus ... \oplus d_{a_{j-1}}=d_{a_j} x⊕da1⊕...⊕daj−1=daj。
那么实际上你调整这些数的插入顺序是没有问题的。
证毕。