07 2022 档案

摘要:哈希与哈希表 • 使用一个哈希函数将某个特定的数字变成另一个数字,这种操作称之为hash。 • 通常我们会以取模运算来作为哈希函数。 • 举例: hash(key)=key%23, 这样数组 [1 ,75,324] -> [1 ,6,2] • 如果哈希后得到的值相同,我们则可用该值建一个链表,把相同 阅读全文
posted @ 2022-07-29 21:52 神茗掉线中(冲AC) 阅读(22) 评论(0) 推荐(0) 编辑
摘要:定义: 基本框架 int dfs(int u) // 保证进入dfs为有效且未访问状态,在进入dfs之后标记 { st[u] = true; // 标记 for (int i = h[u]; i != -1; i = ne[i]) { int j = e[i]; if (!st[j]) dfs(j) 阅读全文
posted @ 2022-07-28 18:21 神茗掉线中(冲AC) 阅读(22) 评论(0) 推荐(0) 编辑
摘要:可持久化线段树 概念:可持久化线段树又被称为主席树。可持久化是指更新的同时保留了历史版本,可以获得所有的历史版本。本质上是多棵线段树,不过这些线段树共同使用了一部分枝干。 实现:可持久化线段树和线段树的实现有很大差别。线段树的 left和right表示区间的左右边界,而可持久化线段树的left和ri 阅读全文
posted @ 2022-07-28 17:36 神茗掉线中(冲AC) 阅读(22) 评论(0) 推荐(0) 编辑
摘要:堆 定义:堆(Heap)是计算机科学中一类特殊的数据结构,是最高效的优先级队列。堆通常是一个可以被看做一棵完全二叉树的数组对象。 堆分为大根堆和小根堆(从小到大用大根堆,从大到小用小根堆) 堆排序: 1、将带排序的序列构造成一个大顶堆,根据大顶堆的性质,当前堆的根节点(堆顶)就是序列中最大的元素; 阅读全文
posted @ 2022-07-27 22:29 神茗掉线中(冲AC) 阅读(46) 评论(0) 推荐(0) 编辑
摘要:倍增 ●所谓倍增,就是把一个数据规模为n的问题分解成若干个2^ai的和,预处理数据范围内所有2^ai 的情况,再将这些规模为2^ai 的问题通过一定的方法合并,得出原问题的解。 ●分治是把整个问题分成几个互不重复的子问题,合并求解;倍增是找互为倍数关系的子问题之间的联系,再合并求解。 ●可以认为,倍 阅读全文
posted @ 2022-07-27 21:42 神茗掉线中(冲AC) 阅读(80) 评论(0) 推荐(0) 编辑
摘要:分治/二分 ●分治/二分算法本质上都是采用了“分而治之”的思想,因此放在一起来讲。 ●所谓分而治之,即把一个大的问题转化成一个、两个或多个小的问题之和。 P1908 逆序对 #include <iostream> #include <cstdio> #include <queue> using na 阅读全文
posted @ 2022-07-27 21:35 神茗掉线中(冲AC) 阅读(75) 评论(0) 推荐(0) 编辑
摘要:STL 在OI里面最常用的几个容器: stack,queue,deque,priority_queue,vector,set,map stack, queue, deque ●分别是栈、队列、双端队列。 ●双端队列的入队和出队操作在两端都可进行。 ●据说双端队列常数不小,建议少用。 priority 阅读全文
posted @ 2022-07-27 21:20 神茗掉线中(冲AC) 阅读(23) 评论(0) 推荐(0) 编辑
摘要:前缀和 *一维 定义:一维前缀和S[i]表示的就是a[1]+a[2]+…+a[i]。 作用:求a[i]~a[j]的和 例如:有一列数字{a},多次询问一个区间[L,R]的和。n,m<=1000000。n 做法很简单,令s[p]=s[p-1]+a[p]=a[1]+a[2]+…+a[p],那么: a[L 阅读全文
posted @ 2022-07-27 20:54 神茗掉线中(冲AC) 阅读(33) 评论(0) 推荐(0) 编辑
摘要:单调栈 定义:栈内元素单调按照递增(递减)顺序排列的栈 基本作用:可以从数组中找到左右两边比x大(小)的数,时间复杂度为O(n) 单调栈的基本操作: ●为了维护栈的单调性,在进栈过程中需要进行判断,具体进栈过程如下:假设当前进栈元素为e, ●对于单调递减栈,从栈顶开始遍历元素,把小于e或者等于e的元 阅读全文
posted @ 2022-07-27 19:19 神茗掉线中(冲AC) 阅读(34) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示