[SPOJ]MAXOR

MAXOR

题解

分块板子

首先看到它的数据范围限制与询问,应该很容易联想到分块。
很显然,我们可以先处理出来每个整块到每个位置所形成的区间内的最大异或和,询问时只需要匹配以散块边界的异或和即可。
如何快速求出区间的异或和呢?很明显,差分即可。
所以我们求出区间内最大异或和即为我们将区间内的数全部作前缀和后,异或值最大的两个数的异或值。
而求最大异或值明显可以在字典树上匹配,我们只要顺次将区间内的数加入,并且在加入每个数之后都求一下该数对应的最大异或值即可。
我们记 p r e i , j , s u f i ,

posted @   StaroForgin  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示