摘要:
二叉排序树能够支持多种动态集合操作,它可以被用来表示有序集合,建立索引或优先队列等。因此,在信息学竞赛中,二叉排序树应用非常广泛。 作用于二叉排序树上的基本操作,其时间复杂度均与树的高度成正比,对于一棵有 \(n\) 个节点的二叉树,这些操作在最有情况下运行时间为 \(O( \log_2 n)\)。 阅读全文
摘要:
题目链接:https://www.luogu.com.cn/problem/P1503 解题思路: 用线段树维护区间和,一开始所有的位置对应的值为 $1$,如果有一个房间被摧毁,更新为 $0$;被修复,更新为 $1$。 查询以 \(x\) 结尾和开头的最长连续 $1$,可以用二分+线段树求区间和。 阅读全文
摘要:
首先,我么要知道:Treap=Tree+Heap。 这里: Tree指的是二叉排序树; Heap指的是堆。 所以在阅读这篇文章之前需要大家对 二叉查找树 和 堆(Heap) 有一定的认识。 Treap支持如下操作: 插入x数 删除x数(若有多个相同的数,应只删除一个) 查询x数的排名(排名定义为比当 阅读全文
摘要:
题目大意: 给你一个长度为 \(n\) 的数组元素 \(a[1], a[2], \cdots, a[n]\)。 接下来有 \(q\) 次操作,操作只有两种类型: “1 p x” —— 更新操作:将 \(a[p]\) 更新为 \(x\); “2 L R” —— 查询操作:求区间 \([L,R]\) 范 阅读全文
摘要:
queue(队列) 定义一个名为 que 的存储 int 类型元素的队列: queue<int> que; 入队操作: que.push(a); // 其中a是一个int类型的变量 出队操作: que.pop(); 但是在队列为空时,进行出队操作会出错。所以需要先判断一下队列是否为空。 判断队列是否 阅读全文
摘要:
题目链接:https://www.luogu.com.cn/problem/CF311B 题目描述 小S是农场主,他养了 \(M\) 只猫,雇了 \(P\) 位饲养员。农场中有一条笔直的路,路边有 \(N\) 座山,从 $1$ 到 \(N\) 编号。第 \(i\) 座山与第 \(i-1\) 座山之间 阅读全文
摘要:
任务安排1(小数据):https://www.luogu.com.cn/problem/P2365 任务安排2(大数据):https://www.luogu.com.cn/problem/P5785 题目描述 有 \(N\) 个任务排成一个序列在一台机器上等待执行,它们的顺序不得改变。机器会把这 \ 阅读全文
摘要:
题目描述 给你一个 \(n\) 行 \(m\) 列( $1 \le n,m \le 100$ )的二维迷宫,一开始你在迷宫的左上角的格子 \((1,1)\) 处(我们用位置 \((x,y)\) 来表示第 \(x\) 行第 \(y\) 列),你要走到右下角的格子 \((n,m)\) 处 ,但是你是不能 阅读全文
摘要:
题目描述 给你一个 \(n\) 行 \(m\) 列的二维迷宫,一开始你在迷宫的左上角的格子 \((1,1)\) 处(我们用位置 \((x,y)\) 来表示第 \(x\) 行第 \(y\) 列),你要走到右下角的格子 \((n,m)\) 处 ,但是你是不能随便走的, 行走的方向是有规定的:每一步你只能 阅读全文
摘要:
题目描述 给你一个 \(n\) 行 \(m\) 列的二维迷宫,一开始你在迷宫的左上角的格子 \((1,1)\) 处(我们用位置 \((x,y)\) 来表示第 \(x\) 行第 \(y\) 列),你要走到右下角的格子 \((n,m)\) 处 ,但是你是不能随便走的,每一步你只能往右移动一格,或者往下移 阅读全文