【学习笔记】【集训队互测2015】最大异或和
这题大概有
N
O
I
NOI
NOI的
t
1
t1
t1难度。但是我维护的东西和正解恰好是反的啊啊啊
离线的做法太难想到了。注意到 n , m n,m n,m同阶,这看着非常亲切,因为意味着我们可以每次修改直接暴力维护,而不需要什么复杂度数据结构去平衡它。
将原序列差分,很容易想到维护一个支持插入,删除的线性基。我们不妨先给出算法流程,然后再来验证其复杂度。在 S A M SAM SAM中我们也是这么干的。
考虑用线性基维护,哪些数在线性基中,以及维护的每个线性基如何用它们表示,不在线性基中的数如何用基底表示。注意,这里的基底指的是原数。
然后分类讨论。设删除的数是 x x x,如果 x x x不是基底那么直接删除即可。否则如果存在 y y y不在基底中,并且其基底表示中有 x x x,那么就可以用 y y y来替代 x x x,显然基底张成的空间不变,那么线性基也不变,但是表示方式变了。如果不存在这样的 y y y,那么意味着基底的数目会减少 1 1 1,考虑消去 x x x对线性基的影响,但是注意到我们要保证最高位 1 1 1具有单调性,那么考虑找到最小的包含 x x x的线性基 z z z,这样 z z z向上消的时候最高位 1 1 1就不会发生变化,将线性基 z z z删除即可。因为是对原来的基进行线性变换所以剩下 k − 1 k-1 k−1个线性基显然也是线性无关的。
复杂度 O ( n 3 w ) O(\frac{n^3}{w}) O(wn3)。
__EOF__

本文链接:https://www.cnblogs.com/cqbzly/p/17529966.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2022-06-03 杂题选做。
2022-06-03 构造题专练