摘要:
数学部分学习笔记 数论 唯一分解定理 定理 对于任意正整数 \(a\),均有: \[a=p_1^{k_1}p_2^{k_2}\cdots p_n^{k_n} \]其中 \(p_1,p_2\cdots p_n\)均为质数。 约数个数定理 对于任意正整数 \(a=p_1^{k_1}p_2^{k_2}\c 阅读全文
摘要:
\(\text{可持久化数据结构学习笔记}\) 可持久化线段树 概述 又称主席树。当我们想要保存线段树上的一些历史版本信息时,直接给每一个版本都开一个线段树显然是吃不消的,考虑优化。以版本之间单点修改为例,容易发现插入一个点最多会有 \(\log n\) 个节点受影响,于是我们可以对这 \(\log 阅读全文
摘要:
\(\text{K-D Tree 学习笔记}\) K-D Tree 是处理 \(k\) 维空间的数据结构。具有二叉搜索树的形态。事实上 OI 中的应用就是 2-D Tree,常用来维护二维平面上一些点对的信息。 构建 要让 K-D Tree 尽量贴近一个二叉搜索树的形态,那就要让某一维度上的中位数作 阅读全文
摘要:
\(\text{P3246 [HNOI2016] 序列 题解}\) 套路地去考虑每个最小值的贡献。对于每个值 \(i\),我们求出它左/右边第一个小于 \(a_i\) 的位置 \(L,R\),那么 \(l\in[L+1,i],r\in[i,R-1]\) 会有贡献。这实际上是一个区间加的形式,同时对于 阅读全文
摘要:
\(\text{线段树进阶学习笔记}\) 线段树是一种常见的数据结构,除了基础用法,我们还需要掌握一些进阶。 线段树的合并与分裂 概念 线段树的合并通常是针对权值线段树的合并,将两棵线段树的信息合并起来保存在一棵线段树中。为了节省空间,我们通常将两棵线段树的信息直接保留在一棵线段树中。需要留意的是, 阅读全文
摘要:
\(\text{CF938G Shortest Path Queries 题解}\) 异或有很多奇妙的小性质,在这道题里都得到了体现。 注意到异或下求出 \((x,y)\) 的最短路等价于 \(\text{dis}(1,x)\oplus\operatorname{dis}(1,y)\),于是先考虑静 阅读全文
摘要:
\(\text{[ARC165E] Random Isolation 题解}\) 首先这个操作次数看上去是和树的形态有关的,显然没法去求,考虑转化。对于每个大小大于 \(K\) 的连通块,出现后我们必然要拆分它,而拆分的代价,即操作次数就是 \(1\)。由期望的定义,事实上我们需要求的是所有大小大于 阅读全文
摘要:
\(\text{CF193D Two Segments 题解}\) 要这个排列构成连续段,那直接维护下标无疑是困难的,于是考虑维护数列中对应的值 \([l,r]\)。暴力维护的区间个数是 \(O(n^2)\) 的,考虑常见的优化套路:将 \(r\) 扫描线,维护 \([1,r-1]\) 中 \(l\ 阅读全文
摘要:
\(\text{CF603E Pastoral Oddities 题解}\) 首先“每个点度数均为奇数”这个限制显然无法直接处理。手玩一些样例后容易发现这个限制等价于原图中只存在大小为偶数的连通块。这个限制我们是好规约的,在无向图上并查集维护连通性可以处理。 动态插入边的操作是困难的,不妨先考虑静态 阅读全文
摘要:
\(\text{CF786C Till I Collapse 题解}\) 朴素的回答一个询问所需要的时间复杂度是 \(O(n)\)。注意到若将 \(n\) 个数划分成满足题目的限制,那么答案一定不会大于 \(\lceil\dfrac nk\rceil\)。我们希望可以利用答案较小这一性质,于是发现 阅读全文
摘要:
\(拉格朗日插值学习笔记\) 插值是一种通过已知的、离散的数据点推算一定范围内的新数据点的方法。插值法常用于函数拟合中。我们知道一个 \(k\) 次多项式可以由 \(k+1\) 个点唯一确定,由此我们可以得到拉格朗日插值算法。 思路 我们现在给定 \(n\) 个点坐标为 \((x_i,y_i)\), 阅读全文