セグメントツリーの範囲クエリが$ \ \ LCEIL \ LOG_2 {N} \ RCEIL $ノードで返されるのはなぜですか?

cs.stackexchange https://cs.stackexchange.com/questions/125095

役に立ちましたか?

解決

これは基本的な考えです。

ダイアディック間隔を形の間隔である $$ [2 ^ b a、2 ^ b(a + 1)-1] $$ integer $ a、b \ geq 0 $

請求項1。 $ m <2 ^ n $ $ [0、M-1] $ は、 $ n $ dyadic間隔の互いに疑似合の共用体として書くことができます。

証明。 $ m $ を2の電力の減少の合計として展開します。 $$ m= 2 ^ {a_1} + \ cdots + 2 ^ {a_k}。 $$ それから私たちは書くことができます $$ [0、M - 1]= [0,2 ^ {A_1} -1] \ cup [2 ^ {a_1}、2 ^ {a_1} + 2 ^ {a_2} -1] \ cup \ cdots \ cup [2 ^ {a_1} + + 2 ^ {a_ {k - 1}}、2 ^ {a_1} + \ cdots + 2 ^ {a_k} -1]。 $$

請求項2. $ 0 \ leq m_1 \ leq m_2 \ leq 2 ^ n $ $ [M_1、M_2-1] $ は、 ded 2n $ dyadic interveの互いに素な共用体として書くことができます。

証明 $ m_1 $ $ m_2 $ $ m_1= x0y、m_2= x1z $ の形式です。ここで、 $ | y |= | z | $ < /スパン>。 $ m= x10 ^ {| z |} $ 。請求項1を使用して、 $ [0、m_2-m-1] $ $ nの共用体として表現することができます。 $ ダイアディック間隔。 $ m $ によってこれらをシフトさせると、 $ [m、m_2-1] $ をexpressにexpresent aのunionほとんどの $ n $ dyadic間隔。同様に、請求項1を使用して、 $ [0、m-m_1-1] $ $を表現できます。 n $ ダイアディック間隔。シフトと反転、 $ [m_1、m-1] $ x $ n $ 二量間間隔。

(両方の場合において、シフト、そして反転する可能性があることを確認する必要がある場合は、相間隔が死角であることを確認する必要がある。)

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top