அல்கோரிதம்range sum query
Range Sum Query — அடிப்படை
TT
Testlaa Team
May 15, 2026•2 min read
Range Sum Query — இடைவெளி கேள்விகள்/புதுப்பிப்புகளுக்கான மரக் கட்டமைப்பு.
உண்மை உலகில் இது ஏன் முக்கியம்?
காலத் தொடர், விளையாட்டு தரவு, நேர்காணல் — வேகமான இடைவெளி கேள்விகள்.
மையக் கருத்து (மாணவர்களுக்கான விளக்கம்)
இடைவெளி [l,r] கேள்வி/புதுப்பிப்பு O(log n); மர உயரம் ≈ log n; 1-அடுக்கு குறியீட்டில் 4n அளவு.
Pythonில் முயற்சி செய்வோம்
class SegTreeSum:
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 update(self, i: int, val: int) -> None:
i += self.size
self.t[i] = val
while i > 1:
i //= 2
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
s = 0
while l <= r:
if l % 2 == 1:
s += self.t[l]
l += 1
if r % 2 == 0:
s += self.t[r]
r -= 1
l //= 2
r //= 2
return s
st = SegTreeSum([1, 3, 5, 7, 9, 11])
print(st.query(1, 4))
st.update(2, 10)
print(st.query(1, 4))
பொதுவான தவறுகள்
- 0-அடுக்கு/1-அடுக்கு குழப்பம்.
- மர அளவு n மட்டுமல்ல 4n.
முக்கிய பாடங்கள்
- கையெழுது சிறு உதாரணம் வரை.
- புள்ளி புதுப்பிப்பு முதல், பின் வரம்பு.
Tags:
Segment tree & range queriesPythonமாணவர்கள்
