如下知识均来自大话数据结构这本书,作者程杰 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法具有五个基本特性: 输入、输出、有穷性、确定性和可行性 1.输入:算法可以有输入,也可以没有 2.输出:算法必须要至少有一个输出 3.有穷性:指算法在执 ...
介绍 像线性数据结构在查找的时候,⼀般都是使⽤= 或者!= ,在折半查找或者其他范围查询的时候,可能会使⽤< 和> ,理想的时候,我们肯定希望不经过任何的⽐较,直接能定位到某个位置(存储位置),这种在数组中,可以通过索引取得元素。那么,如果我们将需要存储的数据和数组的索引对应起来,并且是⼀对⼀的关系 ...
Ⅰ.数据结构 1.树状数组 时间复杂度:\(O(n\log n)\) 优点:常数小 缺点:可以维护的内容不如线段树 应用:小常数维护前缀和或单点值 int tr[200005]; void add(int x,int y){while(x<=n)tr[x]+=y,x+=(-x)&x;} int q ...
今天退役了,根据惯例要写一篇小作文,如果你能能读完这篇小作文,我会很高兴。 这篇小作文会介绍一下我在打 ICPC 期间学过的 LCS 相关的算法,希望能提高大家的理解。 \(\text{LCS}\) 问题:字符集为 \(\Sigma\),你需要求两个字符串 \(A, B\) 的最长公共子序列。 经典 ...
在整数这个崭新的世界里,乘法是畅通无阻的。但它的逆运算——除法,又成了新的不可能任务。6 / 3 = 2,没问题,结果还是个整数。但 3 / 6 呢?2 / 3 呢?1 / 2 呢?在整数的世界里,没有它们的容身之处。 是时候再次启动我们的“创世工具”流水线了。我们将现场展示,如何用完全一样的“有序 ...
网格图转向最短路问题 题目描述 给定一个 \(n \times m\) 的网格,每个格子标记为 A、B 或 C 类型。从起点 \((1, 1)\) 出发,初始方向向右,目标到达 \((n, m+1)\)(网格右侧外一格)且方向向右。 在不同的格子类型中转向有不同的代价规则: A 格:直行不消耗代价, ...
1. 设顺序表中的元素递增有序,编写一个算法,将元素x插入顺序表L中的适当位置,以保持该顺序表的有序性。 void sortInsert(List *l,int x){ //假设表是有序的 if(l->length==MAXSIZE) exit(1);//表已满,无法插入 for(int i=0; ...
安徽京准:国产化北斗卫星对时服务引领全球 安徽京准:国产化北斗卫星对时服务引领全球 京准科技官微——ahjzsz 全国产北斗卫星授时服务器正凭借其高精度、自主可控的特点,成为全球精准时间同步领域一股强大的力量。下面这个表格,概括了它的核心优势: 自主可控 从芯片到接收机、软件系统实现100%全国产化 ...
该笔记系统性介绍树结构知识,核心涵盖二叉树(术语、类型、层序/前中后序遍历、数组表示及C++实现)、二叉搜索树(插入、查找、删除操作及代码)、AVL树(平衡因子、旋转操作及C++实现)等内容,通过概念讲解与代码示例结合,详细阐述了树结构的原理与应用。 ...
首先注意到图是一个 DAG,那么我们考虑什么情况下是合法的。发现首先是 \(1\) 必须是唯一的一个入度为 \(0\) 的点,且所有点的入度不为 \(0\) 即可。虽然直接想到了但是补一个证明: 1.必要性。如果存在一个入度为 \(0\) 且非 \(1\) 的点,那么也就是说没有有向边可以到达,故非 ...
数据结构之队列 什么是队列 队列是和栈一样操作受限的线性表,栈是只允许在线性表的一端进行入栈和出栈操作,而队列是会允许在线性表的一端进行入队,在另外一端进行出队操作 队列的基本操作 bool initQueue(Queue & Q); // 初始化队列 void destroyQueue(Queue ...
// 容易注意到 qiandao(i) = i - phi(i) // phi 是欧拉函数 // 让我们想起最开始求欧拉函数的做法 // 分解质因数, 然后使用 phi(x) = x * 求积_{p in {x 的所有质因数}} (1 - 1 / p) // 这样的时间复杂度显然过大 // 我们何妨 ...
目录引言GapBuffer 基本思想基本操作基于下标映射的标记记录法下标映射搜索维护对比总结 引言 最近笔者正在优化 Android 开源代码编辑器项目 TextWarrior 的一些算法,包括时间、空间两方面。TextWarroir 的文本编辑器算法采用经典的 GapBuffer,其基本思想是利用 ...
这篇文章信息量偏大,请谨慎阅读,注意高效利用右边的目录。 其他部分咕咕咕地更新中……敬请期待 1.1 二分 & 双指针 关联博文:Atserkcn-0/1分数规划 P1404 平均数 既然要让子串平均数最大,那就二分平均数,判断能否达到即可。复杂度 \(O(n\log V)\)。 关联题目:[202 ...
P11164 [BalkanOI 2023] Permutations 思路 先判断是否有解。 即判断区间是否存在三元组 \((p_i,p_j,p_k)(i < j < k)\) 使得 \(p_i > p_j > p_k\);或者二元组 \((p_i,p_j)(i<j)\) 使得 \(p_i > p ...
dp 总结 1 闲来无事, 把刚学明白的 dp 笔记整理一下. shout out to professor Adzlpxsn. upd at oct 16th 2025, 修复了时间复杂度分析的重大失误. 基本的, 状态, 转移, 方程 状态 一句话概况即为当前的属性. 比如说, 贝贝现在是 \( ...
浅谈处理哈希问题的一类方法-线段树维护哈希 前言 一个初三蒟蒻粗浅的认知和总结,dalao不喜勿喷。分享的题也大都很水,仅是代表浅层理解。 简介/概括 哈希是一种常用的算法。我们在oi中使用哈希的主要目的是将难以直接处理、维护、比较的对象映射到范围小/便于维护/便于处理/便于比较的对象上。 映射的方 ...
什么是内建函数: GCC 编译器自带的内建函数。这些_builtin*形式的内建函数一般是基于不同硬件平台采用专门的硬件指令实现的,因此性能较高。 介绍一些常用的内建函数: __builtin_ctz() 返回从最低位开始(右起)的连续 0 的个数 根据数据类型不同有: int __builtin_ ...
推歌:踊り子 洛谷传送 看起来很能分块啊!然后一个分块吧唧一下拍上去就过了。 好的我们还是来看看平衡树做法。 我们考虑每次操作是什么。发现其实是把 \(a_r\) 的位置移到了 \(a_l\) 的前面,\(a_i\sim a_{r-1}\) 内的所有元素向右平移了一格。这种平移看起来可以用平衡树维护 ...
定义: 一种可以实现“先进先出”的存储结构 队列类似于排队买票 分类: 链式队列:基于列表 静态队列:基于数组 静态队列通常都必须是循环队列 静态队列为什么是循环队列? 减少对内存的浪费 用传统数组来实现队列的话,参数只能加不能减 循环队列需要几个参数来确定以及各个参数的含义 需要两个参数来确定:f ...