摘要: 扫描线的运用及其思路 扫描线是一种求矩形面积并/周长并的好方法,但不易拓展。 假设在一个平面上有几个矩形,要求它们共覆盖了多大的面积。由于矩形可能会有重叠的地方,所以最后要求的图形就是一个不规则的图形。 要求它的面积十分复杂,特别是在矩形数量很大时。为了解决这个问题,扫描线法应运而生。 想象一下,有 阅读全文
posted @ 2024-02-01 10:20 Brilliant11001 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 二叉搜索树的定义及性质 二叉搜索树(\(\texttt{Binaty Search Tree}\))简称 \(\texttt{BST}\),它拥有“\(\texttt{BST}\) 性质”,这也是平衡树的基础。 给定一棵二叉树,树上的每一个节点带有一个权值。所谓“\(\texttt{BST}\) 性 阅读全文
posted @ 2024-02-01 10:20 Brilliant11001 阅读(4) 评论(0) 推荐(0) 编辑
摘要: \(\texttt{Origin}\) \(\texttt{ODT (Old Driver Tree)}\),中文名珂朵莉树。 有人为了 CF896C 发明了这个算法,这道题又和珂朵莉有关,所以这个算法叫做珂朵莉树。 另外,由于发明者 \(\texttt{lxl}\) 的原因,也珂叫 \(\text 阅读全文
posted @ 2024-02-01 10:18 Brilliant11001 阅读(25) 评论(0) 推荐(0) 编辑
摘要: \(\texttt{set}\) 是什么 \(\texttt{set}\) 是 \(\texttt{C++ STL}\) 中提供的容器,\(\texttt{set}\) 也是数学上的集合——具有唯一性,即每个元素只出现一次,而 \(\texttt{multiset}\) 则是可重集,两者的内部实现是 阅读全文
posted @ 2024-02-01 10:13 Brilliant11001 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 前言 虽然分块是一种数据结构,但是我认为它更像一种思想:分部分处理序列。 虽然分块的时间复杂度一般比树状数组和线段树高,但是它能解决很多树状数组和线段树解决不了的事情。比如:树状数组和线段树在维护不满足区间可加、可减性的信息时显得吃力,代码实现也不简单直观。这时候,常常就要请出我们的分块大法啦。 它 阅读全文
posted @ 2024-01-23 19:55 Brilliant11001 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 引入 根据任意正整数关于 \(2\) 的不重复次幂的唯一分解原理性质,若一个正整数 \(x\) 的二进制表示为 \(a_{k - 1}a_{k - 2}\cdots a_2a_1a_0\),其中等于 \(1\) 的位是 \(\{a_{i_1},a_{i_2},\cdots ,a_{i_m}\}\), 阅读全文
posted @ 2024-01-23 19:54 Brilliant11001 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 简介: 线段树(\(\texttt {Segment Tree}\)) 是一种高级数据结构,是一种基于分治思想的二叉树结构,主要用来处理区间问题。它可以在 \(O(\log n)\) 的时间复杂度内维护序列中满足结合律的变量,例如:\(max\),\(min\),\(\sum\) 和 \(xor\) 阅读全文
posted @ 2024-01-23 19:53 Brilliant11001 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 温馨提示:本篇含有大量 \(\LaTeX\) 公式,可能加载较慢! 一. 质数 定义 若一个正整数的因数只有 \(1\) 和它本身,那么这个数就是质数,否则为合数。特殊的,\(1\) 既不是质数,又不是合数。 质数分布定理 \[\lim\limits_{n\rightarrow \infty}\pi 阅读全文
posted @ 2023-12-26 16:36 Brilliant11001 阅读(0) 评论(0) 推荐(0) 编辑
摘要: DAY 0 晚上回家手打一下dijkstra和SPFA的板子,感觉复赛要用 (实际上并没有用),然后把复赛的一些注意事项看了一遍,觉得应该没有什么大问题了,心态调整得还不错,很快就睡着了。 DAY 1 早上7点起床赶往七高,因为去年也是在这里考试,所以并没有发现什么新奇的东西,早上的J组感觉还好,没 阅读全文
posted @ 2023-11-03 20:02 Brilliant11001 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 1.快速排序 void qsort(int l, int r) { int mid = a[(l + r) / 2]; int i = l, j = r; do{ while(a[i] < mid) i++; while(a[j] > mid) j--; if(i <= j) { swap(a[i] 阅读全文
posted @ 2023-09-26 15:48 Brilliant11001 阅读(2) 评论(0) 推荐(0) 编辑