回答查询的数据结构

问题描述

在想出一个数据结构来回答这个问题时需要一些帮助。目的是对数组执行以下类型的Q查询

  1. 类型1:给定L和R,返回

    \sum_{j = L to R} \sum_{k = j + 1 to R} (A_j * A_k)

  2. 类型2:使用值val更新位置idx

如何有效回答这些查询?天真的方法是n ^ 2。我一直在考虑保持累积和,因为A_j不在上式的总和中。

解决方法

This是您要寻找的。​​ p>

Fenwick树或二进制索引树是一种可以 有效地更新元素并计算表中的前缀和 数字。

,

full_data.query("fruity == 1 and hard == 0",inplace=False)['winpercent'] Segment TreeFenwick Tree是有用的数据结构,可以更好地解决时间复杂性问题。 (比n ^ 2快)。