คำถามติดแท็ก intervals

1
โครงสร้างข้อมูลสำหรับแผนที่เป็นระยะ
ให้เป็นจำนวนเต็มและให้แทนเซตของจำนวนเต็มทั้งหมด ลองแสดงว่าช่วงเวลาของจำนวนเต็ม\}nnnZZ\mathbb{Z}[a,b][a,b][a,b]{a,a+1,a+2,…,b}{a,a+1,a+2,…,b}\{a,a+1,a+2,\dots,b\} ฉันกำลังมองหาโครงสร้างข้อมูลที่จะเป็นตัวแทนของแผนที่{Z} ฉันต้องการโครงสร้างข้อมูลเพื่อสนับสนุนการดำเนินการต่อไปนี้:f:[1,n]→Zf:[1,n]→Zf:[1,n] \to \mathbb{Z} get(i)get(i)\text{get}(i)ควรกลับ(i)f(i)f(i)f(i) set([a,b],y)set([a,b],y)\text{set}([a,b],y)ควรปรับปรุงเพื่อให้คือการปรับปรุงไปแผนที่ใหม่ดังกล่าวว่าสำหรับและสำหรับb]ffff(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=\cdots=f(b)=yffff′f′f'f′(i)=yf′(i)=yf'(i) = yi∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)i∉[a,b]i∉[a,b]i \notin [a,b] stab(i)stab(i)\text{stab}(i)ควรกลับช่วงเวลาที่ใหญ่ที่สุดเช่นนั้นและเป็นค่าคงที่ใน (เช่น )[a,b][a,b][a,b]i∈[a,b]i∈[a,b]i \in [a,b]fff[a,b][a,b][a,b]f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=\cdots=f(b) add([a,b],δ)add([a,b],δ)\text{add}([a,b],\delta)ควรอัปเดตเป็นแผนที่ใหม่เช่นนั้นสำหรับและffff′f′f'f′(i)=f(i)+δf′(i)=f(i)+δf'(i) = f(i) + \deltai∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)สำหรับi∉[a,b]i∉[a,b]i \notin [a,b] ] ฉันต้องการให้การดำเนินการแต่ละอย่างมีประสิทธิภาพ ฉันจะนับเวลาหรืออย่างมีประสิทธิภาพ แต่เวลาช้าเกินไป มันก็โอเคถ้าเวลาการทำงานถูกตัดจำหน่ายเวลาการทำงาน มีโครงสร้างข้อมูลที่ทำให้การดำเนินการทั้งหมดเหล่านี้ไปพร้อม ๆO(1)O(1)O(1)O(lgn)O(lg⁡n)O(\lg n)O(n)O(n)O(n) (ฉันสังเกตเห็นรูปแบบที่คล้ายกันเกิดขึ้นในการท้าทายการเขียนโปรแกรมหลายอย่างนี่เป็นลักษณะทั่วไปที่เพียงพอสำหรับปัญหาการท้าทายเหล่านั้นทั้งหมด)

1
การพิสูจน์ความซับซ้อนของเวลาสำหรับการนำทรีเซ็กเมนต์ของปัญหาผลรวมระยะไกล
ผมเข้าใจว่าต้นไม้ส่วนที่สามารถใช้ในการหาผลรวมของอาร์เรย์ย่อยของ และที่สามารถทำในนี้เวลาตามกวดวิชาที่นี่AAAO (บันทึกn )O(log⁡n)\mathcal{O}(\log n) แต่ฉันไม่สามารถพิสูจน์ได้ว่าเวลาสอบถามย่อมเป็นn) ลิงค์นี้ (และอื่น ๆ อีกมากมาย) บอกว่าเราสามารถพิสูจน์ได้ว่าในแต่ละระดับจำนวนสูงสุดของโหนดประมวลผลเป็นและอื่น ๆn)O (บันทึกn )O(เข้าสู่ระบบ⁡n)\mathcal{O}(\log n)444O (4บันทึกn ) = O ( บันทึกn )O(4เข้าสู่ระบบ⁡n)=O(เข้าสู่ระบบ⁡n)\mathcal{O}(4 \log n) = \mathcal{O}(\log n) แต่เราจะพิสูจน์เรื่องนี้ได้อย่างไรโดยความขัดแย้ง? และถ้าเป็นเช่นนั้นถ้าเราจะใช้เซกเมนต์ต้นไม้เพื่อหาผลรวมของอาร์เรย์มิติที่สูงขึ้นการพิสูจน์จะขยายออกไปได้อย่างไร? ตัวอย่างเช่นฉันสามารถคิดถึงการหาผลรวมย่อยของเมทริกซ์ย่อยโดยแบ่งเมทริกซ์ดั้งเดิมออกเป็น 4 ส่วน (คล้ายกับช่วงเวลาแบ่งครึ่งในอาร์เรย์เชิงเส้น) สร้างต้นไม้เซ็กเมนต์ Quadrant แต่หลักฐานพิสูจน์ฉัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.