Zheng Chu's Blog

让希望永驻


  • 主页

  • 所有专栏

  • 历史文章

  • 标签

  • 关于我

算法Basic--Trie树并查集堆

Posted on 2019-10-20 Edited on 2020-12-06 In 算法与数据结构 Views:

手写堆

  • 需要的操作:

    • 插入一个数:heap[++size] = x; up(size);

    • 求集合当中的最小值 :heap[1];

    • 删除最小值 :heap[1] = heap[size]; size —; down(1)

    • 删除任意一个元素:heap[k] = heap[size]; size— ; down(k); up(k);

    • 修改任意一个元素:heap[k] = x; down(k); up(k);

  • 结构:完全二叉树;

  • 小根堆定义:根节点小于左右节点(递归定义)。

  • 根节点为x:左儿子是2x , 右儿子是 2x+1。

两个操作:down(x)、up(x).

字符串哈希

  • 字符串前缀哈希法。

字符串看成p进制的数,

比如ABCD,第一位为A,第2位为B,… ,其中A视为 1,B视为2,

那么ABCD可以看为p进制上的1234,那么有(1*p3 + 2 * p2 + 3*p1 + 4*p0) mod Q,取模Q是因为

前面的数和太大,这样就可以把该字符串映射到0~Q之间。

  • 每个字符都不能映射成0;
  • Rp足够好,不存在冲突。
  • p=131或13331,Q=2^64.

求前缀的公式: h(i) = h(i- 1) * P + str[i]

求【L,R】子串哈希值的公式:h(R) - h(L) * P^(R - L + 1)

# Algorithm # Acwing
头条2018年题
算法Basic-BFS
  • Table of Contents
  • Overview
Zheng Chu

Zheng Chu

90 posts
20 categories
25 tags
GitHub 简书 CSDN E-Mail
  1. 1. 手写堆
  2. 2. 字符串哈希
© 2021 Zheng Chu
Powered by Hexo v4.2.1
|
Theme – NexT.Pisces v7.3.0
|