摘要:
树状数组的问题模型: 现在有一个这样的问题: 有一个数组$a$,下标从$0$到$n 1$,现在你要进行$w$次修改,$q$次查询。 修改是修改数组中某一个元素的值; 查询是查询数组中任意一个区间的和,$w+q0) { res+=c[x]; x =lowbit(x); } return res; } 阅读全文
摘要:
线段树原理 线段树,类似区间树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为$O(logn)$。 线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区间是$[a,b]$,那么$(c 阅读全文
摘要:
如果一个字符串可以被拆分为$AABB$的形式,其中$A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的。 例如,对于字符串$aabaabaa$,如果令$A=aab$,$B=a$,我们就找到了这个字符串拆分成$AABB$的一种方式。 一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分 阅读全文
摘要:
在图论中,一个有向图被成为是 强连通的 当且仅当每一对不相同结点 和`v u`到 的路径也存在从 到`u (strongly connected component)`。 比如说这个有向图中,点$1,2,4,5,6,7,8$和相应边组成的子图就是一个强连通分量,另外点$3,9$单独构成强连通分量。 阅读全文
摘要:
概述篇 ,即最近公共祖先,是指这样的一个问题:在一棵有根树中,找出某两个节点 和 最近的公共祖先。 可分为 在线算法 与 离线算法 在线算法: 指程序可以以序列化的方式一个一个处理输入,也就是说在一开始并不需要知道所有的输入。 离线算法: 指一开始就需要知道问题的所有输入数据,而在解决一个问题后立即 阅读全文
摘要:
题意描述 给你一个字符串,求所有字符的总数。 字符只包含数字,大小写字母。 分析 字符串的长度还是$\le5$的。 直接枚举就可以了。 AC代码: NOIP官方标准程序是这样的 cpp include include include int main() { freopen("title.in", 阅读全文
摘要:
"题目传送门" 题意描述 有$4 \times 4$的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑$\to$白 或 白$\to$黑)时,其周围上下左右(如果存在的话)的格子的颜色也被反转,问至少反转几个格子可以使$4 \times 4$的正方形变为纯白或者纯黑? 分析 对于每一 阅读全文
摘要:
在求解除法取模问题$(a \div b) \mod m$时,我们可以转化为$[a \mod (b \times m)]\div b$ 但是如果$b$很大,则会出现爆精度问题,所以我们避免使用除法直接计算。 可以使用逆元将除法转换为乘法:假设$b$存在乘法逆元,即与$m$互质(充要条件)。 设$c$是 阅读全文
摘要:
`RMQ(Range Minimum/Maximum Query)`,即区间最值问题。 对于长度为 的数列 ,回答若干查询 `RMQ(A,i,j)(i,j &A) { int n=A.size(); for (int i=0; i 阅读全文
摘要:
普通莫队 简介 莫队是一种基于分块思想的离线算法,用于解决区间问题,适用范围如下: 1. 只有询问没有修改。 2. 允许离线。 3. 在已知询问$[l,r]$答案的情况下可以$O(1)$得到$[l,r−1],[l,r+1],[l−1,r],[l+1,r]$的答案。 满足以上三个条件就可以在$O(n\ 阅读全文