Segment Tree
Last updated
Last updated
μΈκ·Έλ¨ΌνΈ νΈλ¦¬λ νΉμ ꡬκ°μ λΆλΆν©μ ꡬνκΈ° μν΄ μ¬μ©λκ³ μ΄μ§ νΈλ¦¬μ ννλ₯Ό λκ³ μλ€.
μΈκ·Έλ¨ΌνΈ νΈλ¦¬λ μ μκ°λ³΅μ‘λλ‘ λΆλΆν©μ ꡬν μ μλ€.
λ¨Όμ λ¨μν λ°©λ²μΌλ‘ ꡬκ°μ μ«μλ₯Ό μ λΆ λν΄ λΆλΆν©μ ꡬνλ κ²½μ°, μκ°λ³΅μ‘λλ₯Ό κ°μ§ κ²μ΄λ€. λλ κ° μμκΉμ§μ ν©μ λνλ΄λ λ°°μ΄μ μ΄μ©νλ€λ©΄, λ°°μ΄μ μ λ ₯λ°μ ν μλ κ°λ₯ν κ²μ΄λ€.
νμ§λ§, μμμ κ°μ΄ λ°λλ€λ©΄ μ΄λ»κ² ν΄μΌν κΉ? νΉμ μμκ°μ΄ λ°λλ€λ©΄, κ²°κ΅ ν©μ λνλ΄λ λ°°μ΄μ μ¬μ©νλλΌλ μ΄ μμλλ€.
λ°λΌμ μ΄ μμλλ μΈκ·Έλ¨ΌνΈ νΈλ¦¬λ₯Ό μ¬μ©νλ€.
μΈκ·Έλ¨ΌνΈ νΈλ¦¬λ λ€μκ³Ό κ°μ΄ μ΄λ£¨μ΄μ Έμλ€.
κ° λ Έλ μμ μ«μλ ν©μ λ²μλ₯Ό λ»νλ€.
μ¦ λ£¨νΈλ Έλλ 0~5λ² μμμ ν©, κ° λ¦¬ν λ Έλλ κ° μμ μ체μ κ°μ λ»νλ€.
κ·Έλ λ€λ©΄ μ΄ κ΅¬μ‘°λ₯Ό ν΅ν΄ μ΄λ»κ² μμ±νκ³ ν©μ ꡬνκ³ κ°μ λ³κ²½ν μ μμκΉ?
κ°λ¨νκ² κ΅¬ννκΈ° μν΄ λ°°μ΄(tree)μ μ΄μ©νλ€. μμμ κ°μκ° Nκ°μΌ λ, 4Nλ§νΌμ ν¬κΈ°μ λ°°μ΄μ μμ±νλ€. λλν ν¬κΈ°μ λ°°μ΄μ μμ±νλ κ²μ΄λ€.
μ΄ λ tree
μ μΈλ±μ€μ μμμ 1μ΄λΌκ³ μ€μ νλ κ²μ΄ νΈνλ€. νΉμ λ
Έλμμ μΈλ±μ€ * 2
λ μΌμͺ½ μμ λ
Έλ, μΈλ±μ€ * 2 + 1
μ μ€λ₯Έμͺ½ μμ λ
Έλλ₯Ό κ°λ₯΄ν€κ² λκΈ° λλ¬Έμ΄λ€.
μμ±μ μ¬κ·λ₯Ό μ΄μ©νλ€. 루νΈμμλΆν° μμν΄μ λ²μκ° 1μΈ λ¦¬ν λ Έλμ λλ¬νκ² λλ©΄ μμκ°μ μ μ₯νλ€. λ²μκ° 2 μ΄μμ΄λΌλ©΄ μΌμͺ½ μμμ λ Έλκ°κ³Ό μ€λ₯Έμͺ½ μμμ λ Έλκ°μ λνλ€.
μ°λ¦¬κ° ꡬνκ³ μ νλ ꡬκ°μ΄ 2~5 λΌκ³ ν΄λ³΄μ.
κ·Έλ λ€λ©΄ κ° λ Έλμ ꡬκ°μ΄ μμ λ 3κ°μ§ κ²½μ°λ‘ λλ μ μλ€.
λ Έλμ ꡬκ°μ΄ μνλ κ΅¬κ° λ°μ μμ λ β 0
λ Έλμ κ΅¬κ° λ΄μ μνλ ꡬκ°μ μ‘΄μ¬ν λ β μΌμͺ½ μμκ³Ό μ€λ₯Έμͺ½ μμμΌλ‘ λλμ΄ μ‘°μ¬νλ€.
λ Έλμ ꡬκ°μ΄ μνλ κ΅¬κ° λ΄μ μ‘΄μ¬ν λ β κ·Έ κ°μ λνλ€.
μμ 3κ°μ§ μΌμ΄μ€λ₯Ό μ½λλ‘ κ΅¬ννλ©΄ λ€μκ³Ό κ°λ€.
μλ₯Ό λ€μ΄, μμ μ΄λ―Έμ§μμ μ°λ¦¬κ° μνλ ꡬκ°μ΄ [4, 5]λΌκ³ ν΄λ³΄μ.
[0, 5]
[3, 5]
[3, 4]
[4]
[5]
[0, 5]μμλΆν° νκ³ λ΄λ €κ°μ κ²°κ΅ [4]μ [5]λ₯Ό λν΄μ [4, 5] ꡬκ°ν©μ λ°ννκ² λλ€.
μΈκ·Έλ¨ΌνΈ νΈλ¦¬μμ νΉμ μμμ κ°μ λ³κ²½νκ² λλ€λ©΄, μΌμͺ½ μμ λ Έλμ μ€λ₯Έμͺ½ μμ λ Έλ μ€μ ν΄λΉ μμ κ°μ ν¬ν¨ν λΆλΆν©μ λ ΈλμΌ κ²½μ° κ°μ λ³κ²½ν΄μ£Όλ©΄ λλ€.
μ°Έκ³