def main(): rand32 = xorshift32() arr = [rand32() for i in range(1000)] op = lambda x, y: x + y inv = lambda x: -x group_test(arr, op, inv) monoid_test(arr, max)
def main(): sample = [ 723471715, 2497366906, 2064144800, 2008045182, 3532304609, 374114282, 1350636274, 691148861, 746858951, 2653896249 ] for _ in range(2): xor32 = xorshift32() for val in sample: assert (val == xor32())
def __init__(self): self.root = -1 self.pow_sz = 1 self.rand32 = xorshift32() self.stack = array("i", [0]) self.l = array("i", [-1]) self.r = array("i", [-1]) self.p = array("i", [-1]) self.pris = array("I", [self.rand32()]) self.keys = [0]
def main(): rand32 = xorshift32() lbt = LazyBinaryTrie() s = set() for _ in range(10000): # add val = rand32() lbt.add(val) s.add(val) # all_xor val = rand32() lbt.all_xor(val) s = set(v ^ val for v in s) # get_xor_min val = rand32() ans1 = lbt.get_xor_min(val) ans2 = min(v ^ val for v in s) assert (ans1 == ans2)
# verification-helper: PROBLEM http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_1_A import sys input = sys.stdin.buffer.readline from misc.xorshift import xorshift32 from NumberTheory.Convolution.arbitrary_mod_convolve import arbitrary_mod_convolve rand = xorshift32() def check(a, b, MOD): res1 = arbitrary_mod_convolve(a, b, MOD) res2 = [0] * (len(a) + len(b) - 1) for i, va in enumerate(a): for j, vb in enumerate(b): res2[i + j] += va * vb res2[i + j] %= MOD assert (res1 == res2) def mod_2(): a = [rand() for i in range(100)] b = [rand() for i in range(100)] MOD = 2 check(a, b, MOD) def mod_998244353(): a = [rand() for i in range(100)] b = [rand() for i in range(100)] MOD = 10**9 + 7
def __init__(self, MAX_HEIGHT=20): self.MAX_HEIGHT = MAX_HEIGHT self.LENGTH = 1 << MAX_HEIGHT self.sentinel_nd = SLNode(-1, self.MAX_HEIGHT) self.size = 0 self.rand32 = xorshift32()
from misc.xorshift import xorshift32 rand32 = xorshift32() class RMHNode: def __init__(self, val): self.l = None self.r = None self.val = val class RandomizedMeldableHeap: def __init__(self): self.root = None def _meld(self, a, b): if a is None: return b if b is None: return a if b.val < a.val: a, b = b, a if rand32() & 1: a.l = self._meld(a.l, b) else: a.r = self._meld(a.r, b) return a @property def min(self): return self.root.val def push(self, val):
def __init__(self, MAX_HEIGHT=20): self.sentinel_nd = SLSSNode(-self.INF, self.MAX_HEIGHT) self.size = 0 self.rand32 = xorshift32()