EOJ 2021.10 E.异或树
E. 异或树
方法一:先开一个大根堆。然后dfsdfsdfs一遍, 建出可持久化字典树, 并且每个点把自己和祖先的异或最大值扔进堆。循环kkk次, 每次从堆中弹出最大值, 假设被弹出的点已经被弹出来了xxx次, 则在字典树上搜它的第x+1x+1x+1大的异或值, 再扔进堆里即可。时间复杂度O(30n+k(logn+30))O(30n+k(logn+30))O(30n+k(logn+30))
(这道题里面也体现了一个技巧就是做第k大值(k<1e61e61e6)常见都方法就是维护一个优先队列每次取出最大
原创
2021-10-26 21:53:46 ·
178 阅读 ·
0 评论