我试图解决this算法的问题,我遇到了这个很好的解决方案:二进制索引树的应用
“我们的想法是对待一个我,B 我和 Ç我们使用c i作为值, b i作为关键字,它们按照公司的顺序插入给我一个 i。此 方式,对于每一个我反过来,该数据结构允许对C的 最小值查询Ĵ(可能∞)对于b Ĵ在[1..b 我)和 一个 j < a i。我们有çĴ <Ç我当且仅当参赛者我不 优秀。”
现在我有很难理解这一解决方案。
这里是我理解这个解决方案:我知道二叉索引树用于回答查询,比如在数组中找到一个区间的总和,它也支持元素中的更新,它在O(logn)时间复杂度中执行两个操作。 s解决方案表示,我们建立密钥为BIT,其密钥为c i,并且值为b i,基本上b i是附加值,与每个节点一起使用。现在,我们在树中插入元素,增加值 i,这是我失去抓地力的地方。我们插入节点的顺序以及声明在这个部分后面说的是什么,我不知道。
请帮我理解这个解决方案是什么意思。
好吧,我明白了,但它让我思考如果有4列是可以做到这样的事情?我的意思是有可能解决使用这个概念与列> 4或这个问题只是为c = 3。 – ash
@ash您可以用2-D分段树而不是BIT来求解2列。一般来说,可以用'k-2'维分段树来解决'k-D'版本。它显然变得更加复杂,实现更高维度的工作速度更慢。事实上,很有可能开始放弃一个天真的'O(N^2)'大'k'。所以是的,它仅适用于3-D。 – kraskevich