刷新
[数据结构] 二叉搜索树基本操作

博主头像 定义 二叉搜索树是一种特殊的二叉树,其定义如下: 空树是二叉搜索树。 若二叉搜索树的左子树不为空,则其左子树上所有点的附加权值均小于其根节点的值。 若二叉搜索树的右子树不为空,则其右子树上所有点的附加权值均大于其根节点的值。 二叉搜索树的左右子树均为二叉搜索树。 操作 CRUD 二叉搜索树的基本操作 ...

数据结构——并查集 学习笔记

博主头像 数据结构——并查集 学习笔记 并查集是一种用于管理元素所属集合的数据结构,实现为一个森林。 并查集中,每棵树表示一个集合,树中的节点表示对应集合中的元素。 其思想是,把集合属性绑定到根节点上,避免多余的处理,因此一般难以分离。 普通并查集 并查集支持两种操作: 合并(Union):合并两个元素所属集 ...

二分查找的循环条件及指针终止位置问题

博主头像 二分查找的循环条件及指针终止位置问题 常见的二分搜索法的循环迭代方法分为:左闭右开 和 左闭右闭 两种方式 左闭右开:由于右边界开放,例如[1,1)是矛盾的,因此循环条件为while(l<r)。闭合指后续迭代仍需要进行对其元素进行比较。因此每次迭代结束,左指针l移动到中点的下一位l = mid+1, ...

NC275631 嘤嘤不想求异或

博主头像 讲真牛客这次的直播录屏讲得挺烂的(暴论),板书烂,表达烂... 求 \(1\sim x\) 的异或和 当然,求异或和本质上是求每一位的二进制值。 前置知识: 和十进制一样,二进制下最左边是高位,最右边是低位; 异或和计算中,偶数个 \(1\) 结果为,反之为 1。 循环周期推导 接下来推导为什么异或 ...

AtCoder Beginner Contest 361

博主头像 A - Insert (abc361 A) 题目大意 给定一个数组\(a\)和数 \(k,x\),将 \(x\)插入第 \(k\)个数之后,并输出新数组。 解题思路 用\(vector\)的直接 \(insert\)即可。 神奇的代码 #include <bits/stdc++.h> using n ...

LRU算法简介

博主头像 LRU(Least Recently Used,最近最少使用)算法是一种常用于缓存管理的算法,用于在缓存空间有限的情况下,决定哪些数据应该被移除。它的基本思想是:如果一个数据最近被访问过,那么在将来一段时间内它被再次访问的概率较高。因此,当缓存已满,需要移除数据时,优先移除那些最近最少被使用的数据。 ...

静态 top tree 入门

博主头像 理论 我们需要一个数据结构维护树上的问题,仿照序列上的问题,我们需要一个方法快速的刻画出信息。 比如说线段树就通过分治的方式来通过将一个区间划分成 \(\log n\) 个区间并刻画出这 \(\log n\) 个区间的信息。 然后我们考虑把这个东西放到树上类比。你发现线段树上每个非叶节点都有两个儿子 ...

随机数漫谈

博主头像 随机数对程序设计来说很重要,今天就从几方面探讨下一些常见的随机数相关的问题。 本文只讨论整数相关的随机数,另外需要你对概率论有最基本的了解(至少知道古典概型是什么)。 本文索引 如何从rand7生成rand5 go标准库的做法 从rand5生成rand7 充分利用每一个bit 带有权重的随机数 随机 ...

AtCoder Beginner Contest 360

博主头像 A - A Healthy Breakfast (abc360 A) 题目大意 给定一个字符串包含RMS,问R是否在S的左边。 解题思路 比较R和S的下标,谁小即谁在左边。 神奇的代码 #include <bits/stdc++.h> using namespace std; using LL = ...

背包DP——混合背包

顾名思义,混合背包就是将前面三种的背包问题(01,完全,多重)混合起来,有的只能取一次,有的能取无限次,有的只能取 k 次。 正解 特解 部分情况下,如小数据,可以转换成多重背包(把完全情况的数量换成足够大,如1e7,就把完全相对变成了多重) 例题 https://www.luogu.com.cn/ ...

背包DP——完全背包

完全背包模型与 0-1 背包类似,与 0-1 背包的区别仅在于一个物品可以选取无限次,而非仅能选取一次。 而状态转移方程于01背包区别在于可以直接从[i][j-w[i]]转移 理由是当我们这样转移时,[i][j-w[i]]已经由 [i][j-2*w[i]]更新过,那么 [i][j-w[i]]就是充分 ...

线段树题单记录

博主头像 线段树题单记录 线段树的题都很板的,模板敲上去再改改就行 P3372 【模板】线段树 1 题目 Link 为什么模板是绿题,还有下面那道 思路 首先我们要明白它为什么叫线段树: OI Wiki 上的这张图很好理解: 从这张图也可以看出来,线段树的每个节点管辖的一个又一个的线段(区间),所以我们通俗地 ...

123···32>