幸运数字

多个数的异或最大值,考虑线性基;树上静态路径问题,考虑点分治

于是不难得到,在某一次分治的时候,处理lca为当前根的所有询问。具体地,求出每个点到当前根的线性基,然后对于一对点,暴力合并两个线性基(也就是两个向量组的并集的极大无关组等于两个向量组的极大无关组的并集的极大无关组)即可。注意这里判断lca不用真正去找lca,而是可以利用蓝书给的例题的记录数组b的方法

这道题目显然使用贪心构造线性基更easy(关于贪心构造线性基(注意这个insert函数任意时刻的所有a都是呈行梯形矩阵的样子,可以帮助理解),在insert函数中判断插入的数是否为0,如果为0直接返回,不用继续执行插入操作,可以极大提升代码效率,一个卡常trick)

注意时间复杂度,考虑处理每个询问的时候,每一层的时间复杂度是O(q)的,相当于会把每个询问走一遍,别认为每个询问会走很多次然后就认为TLE了

还有注意特判x=y的情况。这题不用特判x=y是因为这种不符合题意

洛谷题解还有在线的做法,可以学一下

posted @   最爱丁珰  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示