एक सेगमेंट ट्री का उपयोग करें - श्रेणी का एक पुनर्संरचनात्मक विभाजन छोटी श्रेणियों में। आपके अपडेट संचालन के प्रत्येक अंतराल को इस पुनरावर्ती विभाजन में श्रेणियों में विभाजित किया जा सकता है। प्रत्येक श्रेणी के लिए स्टोर:[ ए , बी ] ओ ( लॉग एन ) [ एक्स , वाई ][ १ , एन ][ ए , बी ]ओ ( लॉग)n )[ एक्स , वाई]
- अंतरालों की संख्या जिसे बढ़ा दिया गया है और ऐसा कम नहीं किया गया है कि उन श्रेणियों में से जिनमें का विभाजन किया गया है[ a , b ] [ x , y ] [ a , b ]सी ( एक्स , वाई)[ ए , बी ][ एक्स , वाई][ ए , बी ]
- उन कोशिकाओं की संख्या जो अंतराल के विभाजित उपसमूह से आच्छादित नहीं हैं जो पुनरावृत्ति में या निम्न पर हैं[ x , y ]यू ( एक्स , वाई)[ एक्स , वाई]
फिर अगर पुनरावर्ती रूप से और में विभाजित हो जाता है तो हमारे पास
इसलिए हम निरंतर समय में प्रत्येक मान को अपडेट कर सकते हैं जब अन्य डेटा एक सीमा बदलती है। प्रत्येक समर्थन क्वेरी का उत्तर को देखकर दिया जा सकता है ।[ x , z ] [ z + १ , w ] u ( x , y ) = { ० अगर c ( x , y ) > 0 u ( x , z ) + u ( z + १ , y ) अन्यथा यू ( एक्स , वाई ) यू ( 1 )[ एक्स , वाई][ एक्स , जेड][ z+ 1 , w ]
यू ( एक्स , वाई) = { ०u ( x , z) + u ( z)+ 1 , y)यदि c ( x , y) > 0अन्यथा
यू ( एक्स , वाई)यू ( 1 , एन )
वृद्धि प्रदर्शन करने के लिए आपरेशन, विभाजन में पर्वतमाला, वेतन वृद्धि इन सीमाओं से प्रत्येक के लिए, और पुनर्गणना के लिए ऊपर सूत्र का उपयोग इनमें से प्रत्येक पर्वतमाला और उनके प्रत्येक पूर्वज के लिए। कमी ऑपरेशन एक वेतन वृद्धि के बजाय एक वृद्धि के साथ है।[ ए , बी ] ओ ( लॉग एन ) सी ( एक्स , वाई ) यू ( एक्स , वाई )( ए , बी )[ ए , बी ]ओ ( लॉग)n )सी ( एक्स , वाई)यू ( एक्स , वाई)