• 2024-10-12【代码】集合set
    哈喽大家好,我是@学霸小羊,今天来讲一讲集合(set)。在数学上,集合长这样:那今天就来讲一讲编程上的集合。集合的定义:把一些元素按照某些规律放在一起,就形成了一个集合。比如说每个班级就是一个集合,竞赛班也是一个集合,每间学校也是一个集合,等等。集合的特点:确定性、互异性、无序
  • 2024-08-30树状数组
    树状数组用于变化区间的动态维护进行\(O(logn)\)的插入和删除。\(lowbit(x)\)表示二进制表示中最低位的1代表的值称为最小位值,实际上就是二进制表示中最低位的1代表的值称为最小位值二进制表示中最低位的1加上后面的0的值。设树状数组\(c\),\(c_i\)表示${\textstyle\sum
  • 2024-08-27初赛笔记(全面)
    计算时间复杂度 规则   斐波那契数列 表达式:F[1]=1, F[2]=1, F[n]=F[n-1]+F[n-2](n>=3)如果是递推去计算,也就是一个for循环搞定,肯定是O(n)的,因为每一项的值可以通过前面两项的值得到,属于是记忆化了所以啊,计算复杂度一定要注意是否有记忆化  那么如果
  • 2024-08-23ST 表
    ST表ST表,主要思想是空间换时间,用于解决可重复贡献问题和RMQ问题。可重复贡献问题指某个运算\(op\),有\(x\op\x\=\x\)。例如\(max(x,x)=x\\min(x,x)=x\\gcd(x,x)=x\)。RMQ问题指在区间内的最大/最小值查询。ST表ST表基于倍增的思想,做到\(O(n\logn)\)
  • 2024-08-23八大排序一些总结
    基于比较的排序时间复杂度空间复杂度稳定性选择排序O(N^2)O(1)无冒泡排序O(N^2)O(1)有插入排序O(N^2)O(1)有归并排序O(N*logN)O(N)
  • 2024-08-21平衡二叉树、B树、B+树、红黑树解析
    目录有序二叉树平衡二叉树构造平衡二叉树RRLLRLLR平衡二叉树的优缺点:2-3-4树红黑树B树B+树B树、B+树、红黑树的应用有序二叉树关于有序二叉树的详解以及Ja
  • 2024-07-21很多logn级别的数据结构,为什么选择B+树?
    高效的范围查询:B+树的叶节点按顺序链接,可以很方便地进行范围查询。与B树不同,B+树的所有叶节点都包含在一个链表中,这使得范围查询和顺序访问非常高效。稳定的查找性能:B+树的所有叶节点在同一层,查找任何一个数据的路径长度都相同,保证了查找操作的时间复杂度为O(logn)。这意味
  • 2024-07-06Redis的zset的zrem命令可以做到O(1)吗?
    事情是这样的,当我用zrem命令去移除value的时候,我知道他之前会做的几个步骤1、查找这个value对应的score(通过zset中的dict)2、根据这个score查找到跳表中的节点3、删除这个节点我就想了一下为什么dict为什么要保存score呢?如果保存的是跳表中的节点,那么不就可以做到删除O(1)
  • 2024-04-17点分树(动态点分治)学习笔记
    1.定义在点分治的基础上加以变化,构造一颗支持快速修改的重构树,称之为点分树2.算法2.1.思路点分治的核心在于通过树的重心来划分联通块,减少合并层数,从而降低时间复杂度所以,我们可以按分治递归的顺序提出一颗树,易知树高至多为logn具体的说,对于每一个找到的重心,将上一次分治
  • 2024-04-112024.4.11
    2024.4.11【虚怀若谷,戒骄戒躁。】Thursday三月初三<theme=oi-"language">这个好东西叫pb_ds!!!#include<bits/extc++.h>usingnamespace__gnu_cxx;usingnamespace__gnu_pbds;堆操作/数据结构配对堆二叉堆左偏树二项堆斐波那契堆代码pairing_heap_t
  • 2024-04-10归并排序,时间复杂度O(n*logn),空间复杂度O(n),是稳定算法
    空间复杂度原因是因为需要额外数组空间来进行排序时间复杂度T(n)=2T(n/2)+O(n),a=2,b=2,c=1根据master公式可知时间复杂度O(nlogN)归并排序可以排序数据量很大的数组,举例说明,例如要排序有2^64个数字的数组,那么归并排序将会开辟64层系统栈,这并不会导致栈溢出.include<stdio
  • 2024-01-29词向量的维度应该怎么选择
    在之前的文章《最小熵原理(六):词向量的维度应该怎么选择?》中,我们基于最小熵思想推导出了一个词向量维度公式“n>8.33logN�>8.33log⁡�”,然后在《让人惊叹的Johnson-Lindenstrauss引理:应用篇》中我们进一步指出,该结果与JL引理所给出的O(logN)�(log⁡�)是吻合的。既然理论上看上去很完美,
  • 2024-01-05树状数组
    给出一个长度为nn的数组,完成以下两种操作:1.将第ii个数加上kk2.输出区间[i,j][i,j]内每个数的和朴素算法单点修改:O(1)O(1)区间查询:O(n)O(n)使用树状数组单点修改:O(logn)O(logn)区间查询:O(logn)O(logn)前置知识lowbit()lowbit()运算:非负整数xx在二进制表示下最低位1及其后面的0构
  • 2023-12-14逛森林
    这是一道模板题首先,对任意时刻,\(u\)->\(v\)这条路径上的点都是不会变动的(就是说,比如,如果某时刻从\(1\)到\(4\)的路径为\(1\)->\(3\)->\(4\),那么对之后的任意时刻,这条路径都是这个,既不会改变顺序,也不会新增节点,更不会删除已有节点),所以我们可以把所有有效的操作一存起来最后再建边
  • 2023-12-14算法中的复杂度认识O(logn)
    今天在看到O(logn)的时候,先去看了下什么是对数,有一个博主说的特别好,经过勤奋的工作之后,已经忘记了什么是对数。参考百度百科的对数公式:对数公式是数学中的一种常见公式,如果ax=N(a>0,且a≠1),则x叫做以a为底N的对数,记做x=logaN,其中a要写于log右下。其中a叫做对数的底,N叫做真数。通
  • 2023-12-14递归和master公式
    递归的本质是系统帮我们进行了压栈,栈的名字叫做系统栈。但系统栈的空间十分有限,因此在工程上我们需要把递归改写成用内存中的栈来模拟系统压栈,以此来实现非递归。master公式又叫主定理,是一种估算递归时间复杂度的公式。但有个前提条件:只有是子问题规模相同的递归才能使用。T(N)
  • 2023-12-12树状数组
    树状数组所维护的数组记为\(a\),\(n\)表示\(a\)中元素个数,\(lowbit(i)\)表示最低位\(1\)和后面所有\(0\)组成的数,\(c[i]\)表示\(a\)区间\([i-lowbit(i)+1,i]\)的和。\(add(k,x)\):单点修改,表示\(a[k]=a[k]+x\),时间复杂度:\(O(logn)\)。\(sum\):区间查询,\(sum(k)\)表示\(a\)区
  • 2023-12-06第10章. 红黑树
    红黑树(RedBlackTree)红黑树性质null节点只是一种记号,并不存储真实数据,也不是红黑树中的实际节点,其作用是方便程序员在设计和编程时理解节点的操作规则,在实际应用中并没有实际意义。红黑树的等价变换红黑树和4阶B树(2-3-4树)具有等价性红黑树是平衡二叉搜索树,而B树是
  • 2023-09-25排序
    排序算法哪些是稳定的排序算法,哪些是不稳定的稳定的:直接插入排序:最坏情况是逆序,时间复杂度是O(N2),最好情况是插入的都是顺序,时间复杂度O(N),空间复杂度O(1)冒泡排序:时间复杂度O(N2),空间复杂度O(1)计数排序:时间复杂度O(N+Range),空间复杂度O(range)不稳定:希尔排序:时间复杂度O(N
  • 2023-09-24 排序算法
    排序算法哪些是稳定的排序算法,哪些是不稳定的稳定的:直接插入排序:最坏情况是逆序,时间复杂度是O(N^2^),最好情况是插入的都是顺序,时间复杂度O(N),空间复杂度O(1)冒泡排序:时间复杂度O(N^2^),空间复杂度O(1)计数排序:时间复杂度O(N+Range),空间复杂度O(range)不稳定:希尔排序:时间复杂
  • 2023-09-21数据库为什么要索引(转)
    总结:数据库存储顺序随机,如果没有索引,每次查询都需要一行行遍历,查找出符合条件的点,复杂度O(N)数据库会按照rowid排序,并给主键建立索引,所以如果以rowid或者主键为搜索条件,复杂度可以近似看做二分查找的复杂度,即O(logN)如果没有主键,或搜索条件不是主键,可以给搜索目标增加索
  • 2023-09-09排序总结 链表
    排序总结时间复杂度空间复杂度是否能有稳定性选择O(N*N)O(1)×冒泡O(N*N)O(1)✔️插入O(N*N)O(1)✔️归并O(N*logN)O(N)✔️快排(一般指3.0)O(N*logN)O(N*logN)×堆O(N*logN)O(1)×基数排序作为不基于比较的排序,有稳定性基础类型的排序一般排序用快排,因为其时间复杂度常数项更小,需要保持
  • 2023-09-07树状数组
    树状数组用于变化区间的动态维护进行\(O(logn)\)的插入和删除。\(lowbit(x)\)表示二进制表示中最低位的1代表的值称为最小位值,实际上就是二进制表示中最低位的1代表的值称为最小位值二进制表示中最低位的1加上后面的0的值。设树状数组\(c\),\(c_i\)表示${\textstyle\sum
  • 2023-08-12【总结】排序算法的时间复杂度和空间复杂度
    排序算法的时间复杂度和空间复杂度最好时间复杂度最坏时间复杂度平均时间复杂度空间复杂度是否为稳定排序是否为原地排序冒泡排序$O(n)$初始数组正序$O(n^2)$初始数组逆序$O(n^2)$$O(1)$原地使用数组,无额外内存开销是是插入排序是是选择排序$O(n
  • 2023-08-04优先队列
    元素入队时间复杂度O(logn),查询O(1),总体排序时间复杂度O(logn),用于优化一些大数据范围的排序,具体用法如下:#include<bits/stdc++.h>usingnamespacestd;priority_queue<int,vector<int>,less<int>>q;//less<int>:和greater<int>相反structnode{inti,v;};pr