loj#6187. Odd

upt:由于是异或,正确性不一定能保证。可以考虑对每个权值随机赋值加强正确性。

首先有个性质,假如这个区间合法,那么这个区间的异或和等于这个区间出现过的数的异或和。

出现过的数自然想到 HH 的项链,考虑记 las,然后一个数只对 [lasa[i]+1,i] 有贡献。

记 si=v[1] xor v[2] xor ... v[i] 即前缀异或和。

sum1 为区间出现过的数的异或和。

 那么,答案就是 sy xor sx1=sum1x>y,转换下 sy=sum1x>y xor sx1,即找多少个 xor 起来与 sy 相等的。

如何维护 sum1 呢,对于一个数 a[i],它对左端点影响区间是 [lasa[i]+1,i](因为我们查找就是找 x注意是端点不是区间,区间的话需要再抵消上一次的贡献,我们要让这整个端点区间异或上 val[a[i]](因为查找就是找 [x,y] y 是当前枚举的,x[1,y])。对于 sx1 我们可以考虑就是它本来的权值。

考虑 sy 可能很大,需要用 hash 查找,发现可以用分块,对于每个块开一个 hash 表,整个序列初始权值为 si1,然后其他操作显然。

我的代码应该是最劣解 /cy

  


__EOF__

本文作者F x o r G
本文链接https://www.cnblogs.com/xugangfan/p/15153175.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   FxorG  阅读(137)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示