Safe Haskell | None |
---|---|
Language | GHC2021 |
Algorithm.Mo
Description
Mo's Algotrithm
Synopsis
- moAlgorithm :: (Unbox a, PrimMonad m) => Int -> Int -> (a -> Int -> m a) -> (a -> Int -> m a) -> a -> Vector MoQuery -> m (Vector a)
- moBlockSize :: Int -> Int -> Int
- data MoState a = MoState !Int !Int !a
- data MoQuery = MoQuery !Int !Int !Int
- moSort :: Int -> Vector MoQuery -> Vector MoQuery
- moEncode :: Int -> MoQuery -> Word64
- moDecodeQueryIndex :: Word64 -> Int
- encodeMoQuery :: MoQuery -> Word64
- decodeMoQuery :: Word64 -> MoQuery
Documentation
Arguments
:: (Unbox a, PrimMonad m) | |
=> Int | index size (N) |
-> Int | query size (Q) |
-> (a -> Int -> m a) | add |
-> (a -> Int -> m a) | delete |
-> a | initial value |
-> Vector MoQuery | query [l, r) |
-> m (Vector a) |
O(N * sqrt Q)
query for [l,r)
Instances
Unbox MoQuery Source # | |
Defined in Algorithm.Mo | |
Vector Vector MoQuery Source # | |
Defined in Algorithm.Mo Methods basicUnsafeFreeze :: Mutable Vector s MoQuery -> ST s (Vector MoQuery) basicUnsafeThaw :: Vector MoQuery -> ST s (Mutable Vector s MoQuery) basicLength :: Vector MoQuery -> Int basicUnsafeSlice :: Int -> Int -> Vector MoQuery -> Vector MoQuery basicUnsafeIndexM :: Vector MoQuery -> Int -> Box MoQuery basicUnsafeCopy :: Mutable Vector s MoQuery -> Vector MoQuery -> ST s () | |
MVector MVector MoQuery Source # | |
Defined in Algorithm.Mo Methods basicLength :: MVector s MoQuery -> Int basicUnsafeSlice :: Int -> Int -> MVector s MoQuery -> MVector s MoQuery basicOverlaps :: MVector s MoQuery -> MVector s MoQuery -> Bool basicUnsafeNew :: Int -> ST s (MVector s MoQuery) basicInitialize :: MVector s MoQuery -> ST s () basicUnsafeReplicate :: Int -> MoQuery -> ST s (MVector s MoQuery) basicUnsafeRead :: MVector s MoQuery -> Int -> ST s MoQuery basicUnsafeWrite :: MVector s MoQuery -> Int -> MoQuery -> ST s () basicClear :: MVector s MoQuery -> ST s () basicSet :: MVector s MoQuery -> MoQuery -> ST s () basicUnsafeCopy :: MVector s MoQuery -> MVector s MoQuery -> ST s () basicUnsafeMove :: MVector s MoQuery -> MVector s MoQuery -> ST s () basicUnsafeGrow :: MVector s MoQuery -> Int -> ST s (MVector s MoQuery) | |
IsoUnbox MoQuery Word64 Source # | |
newtype Vector MoQuery Source # | |
Defined in Algorithm.Mo | |
newtype MVector s MoQuery Source # | |
Defined in Algorithm.Mo |
moDecodeQueryIndex :: Word64 -> Int Source #
encodeMoQuery :: MoQuery -> Word64 Source #
decodeMoQuery :: Word64 -> MoQuery Source #