摘要: ##树状数组简介 如果有哪一种数据结构可以支持区间/单点和的更新和查询,一个显而易见的答案就是万能的线段树。但是线段树虽然能支持很多的区间问题,但是代码量有些长。如果我们只是单纯地为了维护区间和其实并不用去专门构建一棵线段树。树状数组作为一种更加简单的,可以维护区间和的数据结构应运而生。 ##树状数 阅读全文
posted @ 2021-07-26 14:58 菜鸡mk 阅读(185) 评论(0) 推荐(1) 编辑
摘要: 博客的代码均节选自《Orange's一个操作系统的实现》 ##前置知识: GDT的结构(最好是自己写过),实模式下的中断相关知识 ##正篇 在保护模式下,因为种种原因(比如实模式寻址方式的变化之类的),BIOS提供的中断服务是不可用的。但是中断还是非常重要的一个概念,以至于以后的任务切换,外设访问, 阅读全文
posted @ 2020-11-05 12:57 菜鸡mk 阅读(1030) 评论(0) 推荐(0) 编辑
摘要: ##前置知识: 分段的概念(当然手写过肯定是坠吼的 ##为什么要分页 当我们写程序的时候,总是倾向于把一个完整的程序分成最基本的数据段,代码段,栈段。并且普通的分段机制就是在进程所属的LDT中把每一个段给标识出来。但是在实际运用中,大多数进程不会无限地运行下去。当进程结束之后它占有的内存空间也会被释 阅读全文
posted @ 2020-09-30 13:27 菜鸡mk 阅读(862) 评论(2) 推荐(0) 编辑
摘要: ##前言(瞎逼逼) 自从AFO之后就想着开一个什么新坑,但是包括但不限于大学申请之类的破事儿让我的确忙活了一阵子。。。闲下来的时候突然想起来以前曾经开过一个小头(当然很快就因为姿势水平不够就放弃了)的编写操作系统,于是自己就想着把儿时的梦想继续坚持下去吧 这篇博客主要是依靠于渊的《Orange's 阅读全文
posted @ 2020-08-30 16:50 菜鸡mk 阅读(1469) 评论(0) 推荐(0) 编辑
摘要: ##莫队算法(Mo's Algorithm) ##前置知识 最好是会一点线段树,不会也没有关系 ##正文 我们都知道,维护区间信息的时候通常会用到各种线段树,因为其本身具有的性质可以在很快的速度内完成各种操作。但是这是基于我们上推(pushup)和下推(pushdown)这两种操作可以在O(1)的时 阅读全文
posted @ 2020-07-21 17:06 菜鸡mk 阅读(428) 评论(1) 推荐(1) 编辑
摘要: 题目描述 在 20162016 年,佳媛姐姐喜欢上了数字序列。因而她经常研究关于序列的一些奇奇怪怪的问题,现在她在研究一个难题,需要你来帮助她。 这个难题是这样子的:给出一个 1 到 n 的排列,现在对这个排列序列进行 m 次局部排序,排序分为两种: 0 l r 表示将区间 [l,r][l,r] 的 阅读全文
posted @ 2020-07-01 22:05 菜鸡mk 阅读(141) 评论(0) 推荐(0) 编辑
摘要: ##前置知识 图的遍历(dfs) ##强连通&强连通分量 对于有向图G中的任意两个顶点u和v存在u->v的一条路径,同时也存在v->u的路径,我们则称这两个顶点强连通。以此类推,强连通分量就是某一个分量内各个顶点之间互相连通。 简单来说,就是有向图内的一个分量,其中的任意两个点之家可以互相到达。 求 阅读全文
posted @ 2020-06-21 16:28 菜鸡mk 阅读(2624) 评论(1) 推荐(5) 编辑
摘要: 前置知识 强连通分量 k SAT问题 k SAT问题中的SAT意思就是(stability),也就是适应性问题。本意是给出n个变量,每一个变量有k个状态,并且也给出一些约束条件,要求你求出是否存在每一个变量的取值方案(状态分配方案)。 很可惜,k SAT(k 2)已经被证明是NP完全的问题了,也就是 阅读全文
posted @ 2020-05-20 21:01 菜鸡mk 阅读(666) 评论(0) 推荐(0) 编辑
摘要: 原题链接 题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000)。由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是很容易确定的(但这些起始时间都是非负整数,因为它们必须在整个工程开始后启动)。例如:挖掘完 阅读全文
posted @ 2020-04-30 10:47 菜鸡mk 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 前置知识 二叉树 正篇 首先先来一个问题:给出一个长度为n的序列和m个操作,操作分别是: 1. 单点修改 2. 单点查询 3. 区间加减 4. 区间查询和 "模板题出处" 最简单的做法就是在数组上暴力for, 这样的话单点修改和查询的时间复杂度是$O(1)$, 区间加减和区间查询的复杂度是$O(n) 阅读全文
posted @ 2020-04-08 23:31 菜鸡mk 阅读(99) 评论(0) 推荐(0) 编辑