| 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 #