அல்கோரிதம்segment tree xor

Segment Tree XOR Query — அடிப்படை

TT
Testlaa Team
May 15, 20261 min read

Segment Tree XOR Query — இடைவெளி கேள்விகள்/புதுப்பிப்புகளுக்கான மரக் கட்டமைப்பு.

உண்மை உலகில் இது ஏன் முக்கியம்?

காலத் தொடர், விளையாட்டு தரவு, நேர்காணல் — வேகமான இடைவெளி கேள்விகள்.

மையக் கருத்து (மாணவர்களுக்கான விளக்கம்)

இடைவெளி [l,r] கேள்வி/புதுப்பிப்பு O(log n); மர உயரம் ≈ log n; 1-அடுக்கு குறியீட்டில் 4n அளவு.

Pythonில் முயற்சி செய்வோம்

class SegTreeXor:
    def __init__(self, arr: list[int]) -> None:
        self.n = len(arr)
        self.size = 1
        while self.size < self.n:
            self.size *= 2
        self.t = [0] * (2 * self.size)
        for i, x in enumerate(arr):
            self.t[self.size + i] = x
        for i in range(self.size - 1, 0, -1):
            self.t[i] = self.t[2 * i] ^ self.t[2 * i + 1]

    def query(self, l: int, r: int) -> int:
        l += self.size
        r += self.size
        x = 0
        while l <= r:
            if l % 2 == 1:
                x ^= self.t[l]
                l += 1
            if r % 2 == 0:
                x ^= self.t[r]
                r -= 1
            l //= 2
            r //= 2
        return x


print(SegTreeXor([1, 2, 3, 4]).query(0, 3))

பொதுவான தவறுகள்

  • 0-அடுக்கு/1-அடுக்கு குழப்பம்.
  • மர அளவு n மட்டுமல்ல 4n.

முக்கிய பாடங்கள்

  • கையெழுது சிறு உதாரணம் வரை.
  • புள்ளி புதுப்பிப்பு முதல், பின் வரம்பு.

Tags:

Segment tree & range queriesPythonமாணவர்கள்