タグ付けされた質問 「intervals」

1
間隔のマップのデータ構造
ましょ整数であり、およびlet全ての整数の集合を表します。ましょう整数の意味間隔。nnnZZ\mathbb{Z}[a,b][a,b][a,b]{a,a+1,a+2,…,b}{a,a+1,a+2,…,b}\{a,a+1,a+2,\dots,b\} マップを表すデータ構造を探しています。データ構造で次の操作をサポートする必要があります。f:[1,n]→Zf:[1,n]→Zf:[1,n] \to \mathbb{Z} get(i)get(i)\text{get}(i)は返します。f(i)f(i)f(i) set([a,b],y)set([a,b],y)\text{set}([a,b],y)更新する必要がので、すなわち、更新新しいマップにこのような forおよび for。ffff(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=\cdots=f(b)=yffff′f′f'f′(i)=yf′(i)=yf'(i) = yi∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)i∉[a,b]i∉[a,b]i \notin [a,b] stab(i)stab(i)\text{stab}(i)は、とが一定になるような最大間隔を返す必要があります(つまり、)。[a,b][a,b][a,b]i∈[a,b]i∈[a,b]i \in [a,b]fff[a,b][a,b][a,b]f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=\cdots=f(b) add([a,b],δ)add([a,b],δ)\text{add}([a,b],\delta)更新する必要が新しいマップにようにためのと for。、F ' 、F '(I )= F (I )+ δ I ∈ [ 、B ] F '(I )= F (I )I ∉ 〔、B ]ffff′f′f'f′(i)=f(i)+δf′(i)=f(i)+δf'(i) = f(i) + \deltai∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = …

1
範囲合計問題のセグメントツリー実装の時間の複雑さの証明
のサブ配列の合計を見つけるためにセグメントツリーを使用できることを理解しています。そして、ここのチュートリアルによれば、これはO(log n )時間で実行できます。あAAO(ログn )O(log⁡n)\mathcal{O}(\log n) ただし、クエリ時間が実際にことを証明することはできません。このリンク(および他の多くのリンク)は、各レベルで処理されるノードの最大数が4であることを証明できるため、O(4 log n )= O(log n )であると述べています。O(ログn )O(log⁡n)\mathcal{O}(\log n)444O(4ログn )= O(ログn )O(4log⁡n)=O(log⁡n)\mathcal{O}(4 \log n) = \mathcal{O}(\log n) しかし、おそらく矛盾によって、どうやってこれを証明するのでしょうか? もしそうなら、もし私たちがより高次元の配列の範囲の合計にセグメントツリーを使うとしたら、証明はどのように拡張されるでしょうか? たとえば、元の行列を4つの象限(線形配列の2分の1間隔と同様)に分割して、象限セグメントツリーを構築してサブ行列の合計を見つけることを考えることができますが、その証拠は私にはわかりません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.