文章分类 - c++常用操作
为了避免自己忘记而写
摘要:树状数组 树状数组,能使对一个区间的数修改以及查询的速度提升许多。这里从从单点修改,单点查询,区间修改,区间查询来出发。 对于4个节点的树状数组来说,其结构大致如下: 不过需要注意的是每个节点只有最高节点对应的是树状数组的节点,但这样做的正确性其实是二进制计算得到的。 也就是 $ c_1 = a_1
阅读全文
摘要:P1111 修复公路 这是用连通块的思想来实现并查集,初始个点,他们对应都在自己的联通块里,记为f[x]=x。 对于已经在联通块里的点,我们返回它所在的连通块即可,即int find(int x) {return f[x]==x?x:find(f[x]);}。 我们用记作连通块的
阅读全文
摘要:堆 堆分为插入,查询,删除3个操作,虽然我们通常用优先队列来实现堆的功能,但是手写堆还是需要会的。 P3378 【模板】堆 最基本的二叉堆,也就是用一个二叉树来模拟的,其中通过一定的单调性来排列,其中堆顶为单调性最高的点位。 类似于现端倪树一般的,我们父节点的左儿子记为now<<1,右儿子为(now
阅读全文
摘要:先占个坑位 multiset的使用 CF D. Inaccurate Subsequence Search 这道题用到了插入、查找和删除三个功能。
阅读全文
摘要:”如果一个选手比你小还比你强,那你就该退役了“————单调队列原理 单调队列多用于滑动窗口问题,即区间最优值的问题,与优先队列和线段树的时间复杂度相比,有着高贵的时间复杂度。 区间最大(小)值 区间最值是单调队列的一个经典应用。例如给出一段序列 1 2 3 4
阅读全文
摘要:1.优先队列的定义 优先队列是一个以集合为基础的抽象数据类型。 优先队列中的每一个元素都有一个优先级。 定义在优先队列上的基本运算如下。 : 返回优先队列H中具有最下优先级的元素。 : 将元素x插入优先队列H。 : 删
阅读全文