gpt4 book ai didi

c# - 特殊类型查询的数据结构

转载 作者:太空狗 更新时间:2023-10-29 23:07:29 25 4
gpt4 key购买 nike

我遇到过一些这样的问题。假设我们有一个数组 An元素在哪里 n1附近百万。我们得到形式为 'p q' 的查询.在每个查询中,我们必须对元素 A[p] 执行一些操作至 A[q] .

  • 此操作是一些普通操作,如 XOR或者其他的东西。用于对 A(从索引 p 到 q)中的每个数字与给定数字 m 进行异或运算。对于前- A[p]^m,A[p+1]^m..A[q]^m

如果我们有数千个类型为“p q”的查询,那么我们会对重叠范围进行重复计算(例如 - p1<p2<q1<q2)。如果要权衡空间/时间,我宁愿更快地完成我的工作,即使它需要更多的空间。所以,我关注的是时间而不是空间。

我的问题是 - 是否有任何数据结构可以有效地处理这些类型的查询(有一些范围在进一步的查询中重复)。我能想到的是 - 做一些预- 在数据结构中处理和保存事物。然后在我们收到更多查询时进行更新和处理。

有人可以建议一些有助于处理与某些范围有关的查询的数据结构(特别是当范围进一步广泛重复时)吗?

最佳答案

我首先想到的是 Segment Tree with lazy propagation但它仅在您描述的查询确实是对表的更新并且不返回结果时才真正适用。所以,会有一个update[p q]操作和一个query[p q]。第一个只是使用您描述的操作进行更新,第二个返回范围内的值。

另见 this .

关于c# - 特殊类型查询的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12761944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com