02 2021 档案

摘要:字符串哈希 概念 将字符串通过一个哈希函数转换为哈希值,作为这个字符串的唯一标识。 主要作用是加速判断两个字符串是否相等 实现方法 采用高进制,每个字符对应相应位上的一个数字,这样就将字符串转换为一个巨大的整数 然而这样并不能加速对两字符串的比较 通过对一个大质数取模作为哈希值,这样可以极大加速判断 阅读全文
posted @ 2021-02-28 20:56 ChenHongKai 阅读(128) 评论(0) 推荐(0)
摘要:欧拉筛 用途 快速查找区间内的所有素数 思路 目标是n以内的所有素数,用isNotPrime[n]判断n是否为素数,1代表是非素数,0代表是素数,prime[]用来记录找出的素数 筛除合数,质数筛掉自己的质数倍 为了提高速度,应避免重复筛除(若从2就筛掉了所有偶数,之后所有对偶数的筛查都是多余) 保 阅读全文
posted @ 2021-02-27 23:32 ChenHongKai 阅读(153) 评论(0) 推荐(0)
摘要:单调栈 性质 顾名思义,单调的栈,可递增或递减,主要用于求解NGE问题(Next Greater Element) 思路 对输入的一个数列:1 4 2 3 5 我们维护一个单调减栈: 栈为空或者栈顶元素较大时把元素压入,否则弹出栈顶 栈为空,压入1 1 4 > 1,弹出1,栈为空,压入4 4 2 < 阅读全文
posted @ 2021-02-27 20:11 ChenHongKai 阅读(100) 评论(0) 推荐(0)
摘要:快速幂 思路 分解: \(7^{(1010100)_2} = (7^2)^{(101010)_2} = (7^4)^{(10101)_2} = (7^8)^{(1010)_2}*7^8\) 利用位运算求$b^p$: 不断把指数向右移位,p&1取得最后一位: 每次右移相当于p/2,因此移完后将底数乘二 阅读全文
posted @ 2021-02-27 10:48 ChenHongKai 阅读(121) 评论(0) 推荐(0)
摘要:树状数组 数组的存储方式 数组建议从索引1开始 单点存储 (存储单个数的值) 单点查询与修改快 查询:a[i] 修改:a[i] += delta 区间查询与修改慢 查询:\(\Sigma a[i]\) 修改:for (int index = i; index <= j; index++) a[ind 阅读全文
posted @ 2021-02-27 09:40 ChenHongKai 阅读(110) 评论(0) 推荐(0)
摘要:快速排序 思路 以数组中的任一元素为基准,设这个元素的值为av 两个指针(l,r)分别从数组首尾向中间扫描: 保证l ⇐ r(似乎l < r也可?) 从前往后找到比av大的数停下 从后往前找到比av小的数停下 交换这两个数,然后各自走一格(l++,r--) 递归 为避免对本身有序的数组排序时复杂度过 阅读全文
posted @ 2021-02-26 22:20 ChenHongKai 阅读(89) 评论(0) 推荐(0)
摘要:并查集 Pecco大佬的笔记 特点 并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: 合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。 思路 存储/初始化: 每个 阅读全文
posted @ 2021-02-26 17:35 ChenHongKai 阅读(93) 评论(0) 推荐(0)
摘要:二叉堆 性质 保证父节点优先级始终高于子节点。 思路 存储: 二叉树的存储方式为数组: 每个节点有一个编号pos 左子节点的编号为2*pos(pos<<1) 右子节点的编号为2*pos+1((pos<<1)+1) 插入: 向堆底插入新节点 向上维护 判断是否到达根节点 到达根节点结束维护 未到达根节 阅读全文
posted @ 2021-02-25 22:47 ChenHongKai 阅读(149) 评论(0) 推荐(0)
摘要:目录 目录 1. Markdown标题语法 1.1. Markdown标题语法 1.2. Markdown段落语法 1.3. Markdown换行语法 1.4. Markdown强调语法 1.4.1. 粗体 1.4.2. 斜体 1.4.3. 粗体+斜体 1.5. Markdown引用语法 1.6. 阅读全文
posted @ 2021-02-22 22:12 ChenHongKai 阅读(201) 评论(0) 推荐(0)

1 2 3
4