题目大意:
给出n个数,将它们重新排序,使得排序后的序列满足前n个数的异或值依次递增。
解题思路:
考虑这样一个问题,要使$p \bigoplus q > p$并且此时花费的p最小,用x代表p的二进制表示中从最低位往最高位处第一个不为0的位置,那么最小的q即为二进制表示中的x位是1且其余位都是0。
对于这个问题,我们以二进制表示中的最高位为区分点,先把所有数用一个容器存起来。取数时先看当前的数第一个为0的低位是否有对应的q满足要求,有的话就取,没有就继续往下找,这样依次取直到取完所有数或者满足不了要求为止。
Mycode:
1 |
|