में सेगमेंट पेड़ कार्यान्वयन segment tree का उपयोग कर this समस्या को हल कर रहा हूं लेकिन मुझे समय सीमा त्रुटि मिलती है। नीचे न्यूनतम क्वेरी के लिए मेरा कच्चा कोड है और मेरे कोड में min
से max
बदलकर उपरोक्त समस्या हल हो सकती है। मुझे नहीं पता कि मैं अपने कोड के प्रदर्शन में सुधार कैसे कर सकता हूं। क्या आप इसके प्रदर्शन के मुद्दों के साथ मेरी मदद कर सकते हैं?पायथन
t = [None] * 2 * 7 # n is length of list
def build(a, v, start, end):
'''
A recursive function that constructs Segment Tree for list a.
v is the starting node
start and end are the index of array
'''
n = len(a)
if start == end:
t[v] = a[start]
else:
mid = (start + end)/2
build(a, v * 2, start, mid) # v*2 is left child of parent v
# v*2+1 is the right child of parent v
build(a, v * 2 + 1, mid + 1, end)
t[v] = min(t[2 * v], t[2 * v + 1])
return t
print build([18, 17, 13, 19, 15, 11, 20], 1, 0, 6)
inf = 10**9 + 7
def range_minimum_query(node, segx, segy, qx, qy):
'''
returns the minimum number in range(qx,qy)
segx and segy represent the segment index
'''
if qx > segy or qy < segx: # query out of range
return inf
elif segx >= qx and segy <= qy: # query range inside segment range
return t[node]
else:
return min(range_minimum_query(node * 2, segx, (segx + segy)/2, qx, qy), range_minimum_query(node * 2 + 1, ((segx + segy)/2) + 1, segy, qx, qy))
print range_minimum_query(1, 1, 7, 1, 3)
# returns 13
क्या इसे इसे लागू किया जा सकता है?
'आप कर सकते हैं। [कोड के] प्रदर्शन जारी करने के साथ मेरी मदद करें es? 'क्या आप संकेतों को स्वयं हल करने के संकेत चाहते हैं, या आप विश्लेषण और कोडित समाधान चाहते हैं? 'सेगमेंट की तस्वीर में कहां आती है? (क्या आपने [सेगमेंट टैग का विवरण] पढ़ा था (http://stackoverflow.com/tags/segment/info)?) (डॉकस्ट्रिंग की आपूर्ति के लिए ऊपर उठाया गया - इस संदर्भ से _range न्यूनतम क्वेरी_ को प्रतिबिंबित करने के लिए 'rmq' का नाम बदलने पर विचार करें।) मेरे 2 सेंट: आपकी समस्या _not_ रिकर्सिव बनाम पुनरावृत्त है। – greybeard
@ ग्रेबीर्ड मैं विश्लेषण और कोडित समाधान चाहता हूं। टैग जोड़ने के दौरान मैंने सेगमेंट पेड़ लिखे लेकिन यह पेड़ और सेगमेंट टैग में टूट गया (इसके लिए खेद है)। –
('उस के लिए खेद है' - मैं इसे आपको _know_ टैग संपादित करने के लिए कैसे लेता हूं।) किसी ने [प्राथमिकता खोज पेड़] के बारे में सुना है (http://www.cs.princeton.edu/courses/archive/spr09/cos423/ व्याख्यान /priority-st.pdf)? – greybeard