pyrival.data_structures¶
pyrival.data_structures.BitArray¶
-
class
pyrival.data_structures.BitArray.BitArray(size)¶ Bases:
objectimplements bitarray using bytearray
pyrival.data_structures.CFraction¶
-
pyrival.data_structures.CFraction.CFrac2Frac(cfrac)¶
-
pyrival.data_structures.CFraction.CFraction(frac)¶
pyrival.data_structures.DisjointSetUnion¶
pyrival.data_structures.FenwickTree¶
pyrival.data_structures.Fraction¶
-
class
pyrival.data_structures.Fraction.Fraction(num=0, den=1)¶ Bases:
object
-
pyrival.data_structures.Fraction.gcd(x, y)¶ greatest common divisor of x and y
-
pyrival.data_structures.Fraction.limit_denominator(frac, max_den=1000000)¶
pyrival.data_structures.Heap¶
-
class
pyrival.data_structures.Heap.Heap(iterable=None, reverse=False)¶ Bases:
object-
peek()¶
-
pop()¶
-
poppush(item)¶
-
push(item)¶
-
pushpop(item)¶
-
replace(item)¶
-
-
class
pyrival.data_structures.Heap.OrderHeap(iterable=None, key=<function OrderHeap.<lambda>>, reverse=False)¶ Bases:
pyrival.data_structures.Heap.Heap-
peek()¶
-
pop()¶
-
poppush(item)¶
-
push(item)¶
-
pushpop(item)¶
-
replace(item)¶
-
pyrival.data_structures.LazySegmentTree¶
pyrival.data_structures.LinkedList¶
-
class
pyrival.data_structures.LinkedList.LinkedList(iterable=None)¶ Bases:
object-
append(value)¶
-
get_node(index)¶
-
insert(index, value)¶
-
insert_between(node, left_node, right_node)¶
-
-
class
pyrival.data_structures.LinkedList.Node(value)¶ Bases:
object
pyrival.data_structures.PersistentSegTree¶
-
pyrival.data_structures.PersistentSegTree.create(n)¶ create a persistant segment tree of size n
-
pyrival.data_structures.PersistentSegTree.minimum(ind, l, r, n)¶ find mimimum of set[l:r] for segment tree ind, of size n
-
pyrival.data_structures.PersistentSegTree.setter(ind, i, val, n)¶ set set[i] = val for segment tree ind, of size n
pyrival.data_structures.RangeQuery¶
pyrival.data_structures.SegmentTree¶
pyrival.data_structures.SortedList¶
-
class
pyrival.data_structures.SortedList.SortedList(iterable=[], _load=200)¶ Bases:
object-
add(value)¶ Add value to sorted list.
-
bisect_left(value)¶ Return the first index to insert value in the sorted list.
-
bisect_right(value)¶ Return the last index to insert value in the sorted list.
-
count(value)¶ Return number of occurrences of value in the sorted list.
-
discard(value)¶ Remove value from sorted list if it is a member.
-
pop(index=-1)¶ Remove and return value at index in sorted list.
-
remove(value)¶ Remove value from sorted list; value must be a member.
-
pyrival.data_structures.Treap¶
-
class
pyrival.data_structures.Treap.TreapHashMap(data=None)¶ Bases:
pyrival.data_structures.Treap.TreapMultiSet-
add(key)¶
-
discard(key)¶
-
get(key, default=None)¶
-
remove(key)¶
-
-
class
pyrival.data_structures.Treap.TreapHashSet(data=None)¶ Bases:
pyrival.data_structures.Treap.TreapMultiSet-
add(key)¶
-
discard(key)¶
-
remove(key)¶
-
-
class
pyrival.data_structures.Treap.TreapMultiSet(data=None)¶ Bases:
object-
add(key)¶
-
ceiling(key)¶
-
discard(key)¶
-
floor(key)¶
-
higher(key)¶
-
lower(key)¶
-
max()¶
-
min()¶
-
remove(key)¶
-
root= 0¶
-
size= 0¶
-
-
class
pyrival.data_structures.Treap.TreapSet(data=None)¶ Bases:
pyrival.data_structures.Treap.TreapMultiSet-
add(key)¶
-
-
pyrival.data_structures.Treap.treap_builder(sorted_data)¶ Build a treap in O(n) time using sorted data
-
pyrival.data_structures.Treap.treap_ceiling(root, key)¶
-
pyrival.data_structures.Treap.treap_create_node(key)¶
-
pyrival.data_structures.Treap.treap_erase(root, key)¶
-
pyrival.data_structures.Treap.treap_floor(root, key)¶
-
pyrival.data_structures.Treap.treap_higher(root, key)¶
-
pyrival.data_structures.Treap.treap_insert(root, key)¶
-
pyrival.data_structures.Treap.treap_insert_unique(root, key)¶
-
pyrival.data_structures.Treap.treap_lower(root, key)¶
-
pyrival.data_structures.Treap.treap_max(root)¶
-
pyrival.data_structures.Treap.treap_merge(left, right)¶
-
pyrival.data_structures.Treap.treap_min(root)¶
-
pyrival.data_structures.Treap.treap_split(root, key)¶
pyrival.data_structures.Trie¶
pyrival.data_structures.TwoSat¶
-
class
pyrival.data_structures.TwoSat.TwoSat(n)¶ Bases:
object-
either(x, y)¶ either x or y must be True
-
set(x)¶ x must be True
-
solve()¶
-
-
pyrival.data_structures.TwoSat.scc(graph)¶ Finds what strongly connected components each node is a part of in a directed graph, it also finds a weak topological ordering of the nodes
pyrival.data_structures.convex_hull_trick¶
-
pyrival.data_structures.convex_hull_trick.convex_hull_trick(K, M, integer=True)¶ Given lines on the form y = K[i] * x + M[i] this function returns intervals, such that on each interval the convex hull is made up of a single line. Input:
K: list of the slopes M: list of the constants (value at x = 0) interger: boolean for turning on / off integer mode. Integer mode is exact, it
works by effectively flooring the seperators of the intervals.- Return:
- hull_i: on interval j, line i = hull_i[j] is >= all other lines hull_x: interval j and j + 1 is separated by x = hull_x[j], (hull_x[j] is the last x in interval j)
-
pyrival.data_structures.convex_hull_trick.max_query(x, K, M, hull_i, hull_x)¶ Find maximum value at x in O(log n) time