微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何快速计算按位或段上?

如何解决如何快速计算按位或段上?

给出一个整数列表。

我想知道是否可以针对每个查询的O(1)和前提O(n)在段上计算按位或? (一些前缀和)(对于每个查询的O(log n)和前提的O(n log n)都很容易做到这一点,例如,使用段树,但是哪个更快?)

解决方法

是的,有可能。只需为每个位位置构建一个类似于前缀和的数组,并使用从数据开始设置的连续总位来填充它。每个计数器的初始值为零:counter[0][b]=0,第n个计数器将存储在数据项0到n-1中设置的许多位。

然后,您只需测试范围两端的第b个计数器是否不同({{ 1}})。

最后根据所有(8、16、32 ...)位位置的结果一点一点地组成一个答案。

请注意,此解决方案每原始数据的每个位都需要一个额外的整数,这意味着您需要如果int为32位宽,则内存增加32倍。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。