예제 #1
0
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())
예제 #3
0
 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]
예제 #4
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
예제 #6
0
 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):
예제 #8
0
 def __init__(self, MAX_HEIGHT=20):
     self.sentinel_nd = SLSSNode(-self.INF, self.MAX_HEIGHT)
     self.size = 0
     self.rand32 = xorshift32()