pub struct PartiallyRetroactivePriorityQueue<T>{ /* private fields */ }
Expand description
max-heap
Implementations§
Source§impl<T> PartiallyRetroactivePriorityQueue<T>
impl<T> PartiallyRetroactivePriorityQueue<T>
pub fn new(n: usize) -> Self
Sourcepub unsafe fn set_push_unchecked(&mut self, i: usize, x: T) -> Option<T>
pub unsafe fn set_push_unchecked(&mut self, i: usize, x: T) -> Option<T>
Sourcepub unsafe fn unset_pop_unchecked(&mut self, i: usize) -> Option<T>
pub unsafe fn unset_pop_unchecked(&mut self, i: usize) -> Option<T>
Examples found in repository?
crates/competitive/src/data_structure/partially_retroactive_priority_queue.rs (line 208)
199 pub fn set_no_op(&mut self, i: usize) -> Changed<T> {
200 assert!(i < self.n);
201 let mut changed = Changed::default();
202 let (max, Reverse(k)) = self.in_edges.get(i);
203 let (min, kk) = self.out_edges.get(i);
204 if k != i && kk != i {
205 return changed;
206 }
207 if i == k && max == T::minimum() || i == kk && min == T::minimum() {
208 changed.inserted[0] = unsafe { self.unset_pop_unchecked(i) };
209 } else {
210 changed.removed[0] = unsafe { self.unset_push_unchecked(i) };
211 }
212 changed
213 }
Sourcepub unsafe fn set_pop_unchecked(&mut self, i: usize) -> Option<T>
pub unsafe fn set_pop_unchecked(&mut self, i: usize) -> Option<T>
Sourcepub unsafe fn unset_push_unchecked(&mut self, i: usize) -> Option<T>
pub unsafe fn unset_push_unchecked(&mut self, i: usize) -> Option<T>
Examples found in repository?
crates/competitive/src/data_structure/partially_retroactive_priority_queue.rs (line 210)
199 pub fn set_no_op(&mut self, i: usize) -> Changed<T> {
200 assert!(i < self.n);
201 let mut changed = Changed::default();
202 let (max, Reverse(k)) = self.in_edges.get(i);
203 let (min, kk) = self.out_edges.get(i);
204 if k != i && kk != i {
205 return changed;
206 }
207 if i == k && max == T::minimum() || i == kk && min == T::minimum() {
208 changed.inserted[0] = unsafe { self.unset_pop_unchecked(i) };
209 } else {
210 changed.removed[0] = unsafe { self.unset_push_unchecked(i) };
211 }
212 changed
213 }
Sourcepub fn set_no_op(&mut self, i: usize) -> Changed<T>
pub fn set_no_op(&mut self, i: usize) -> Changed<T>
Examples found in repository?
crates/competitive/src/data_structure/partially_retroactive_priority_queue.rs (line 216)
214 pub fn set_push(&mut self, i: usize, x: T) -> Changed<T> {
215 assert!(i < self.n);
216 let mut changed = self.set_no_op(i);
217 changed.inserted[1] = unsafe { self.set_push_unchecked(i, x) };
218 changed
219 }
220 pub fn set_pop(&mut self, i: usize) -> Changed<T> {
221 assert!(i < self.n);
222 let mut changed = self.set_no_op(i);
223 changed.removed[1] = unsafe { self.set_pop_unchecked(i) };
224 changed
225 }
pub fn set_push(&mut self, i: usize, x: T) -> Changed<T>
pub fn set_pop(&mut self, i: usize) -> Changed<T>
Trait Implementations§
Source§impl<T> Clone for PartiallyRetroactivePriorityQueue<T>
impl<T> Clone for PartiallyRetroactivePriorityQueue<T>
Source§fn clone(&self) -> PartiallyRetroactivePriorityQueue<T>
fn clone(&self) -> PartiallyRetroactivePriorityQueue<T>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<T> Freeze for PartiallyRetroactivePriorityQueue<T>
impl<T> RefUnwindSafe for PartiallyRetroactivePriorityQueue<T>where
T: RefUnwindSafe,
impl<T> Send for PartiallyRetroactivePriorityQueue<T>where
T: Send,
impl<T> Sync for PartiallyRetroactivePriorityQueue<T>where
T: Sync,
impl<T> Unpin for PartiallyRetroactivePriorityQueue<T>where
T: Unpin,
impl<T> UnwindSafe for PartiallyRetroactivePriorityQueue<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more