02 2017 档案
摘要:伸展树的作用和非旋转Treap类似,只不过它依然通过旋转来维持平衡,双旋的情况稍微复杂一点(单旋无法保证均摊$O(logn)$),主要有三种操作: splay(k):将第k大元素旋转至根节点 merge(x,y):合并两棵splay,返回新的根节点 split(x,k):将元素[1,k]和[k+1,
阅读全文
摘要:传统式的Treap通过旋转来保证查找效率,但这样有一个不好:旋转会破环树的形态,导致无法高效的在上面维护标记。而非旋转的Treap就没有这种问题,它通过分裂和合并操作来进行维护而不是旋转。 支持的操作: merge(x,y):将两棵根节点分别为x,y的树合并,返回新的树的根 split(x,k):将
阅读全文
摘要:用二叉堆实现优先队列是十分有效的,然而,有时候我们会遇到“合并两个堆”这样的问题,如果用二叉堆实现就只能启发式合并,复杂度为$O(nlogn)$,相反,用左偏树实现的优先队列就能很好的解决这类问题,复杂度也不错。 (这里没有讲解) 代码:
阅读全文
摘要:有这样一类问题:给出一个图,然后什么东西在上面跑,求出某个期望之类的。 大概两种做法: 直接设出目标状态,通过图上的关系可以构造出目标状态之间的一些关系,直接高斯消元即可,例子: "BZOJ 2377" 直接设出目标状态不好求关系,我们从暴力角度入手,如果可以把它看成每次迭代一个矩阵,每次加上它的某
阅读全文
摘要:高斯消元适用于求解一组线性方程组,它包含$n+1$个$n$维向量,前面的$n n$矩阵为系数矩阵,在算法结束后,$A_{i,n+1}$即为$x_i$的值,根据适当修改也可求解非唯一解或无解情况。 行列式 高斯消元还可以在$O(n^3)$时间以内求得一个方阵的行列式,原理:通过初等行变换将矩阵变为上三
阅读全文
摘要:Portal: https://vjudge.net/problem/UVALive 3525 解析: 我们假设求所求元素的补集,即满足“存在一个三元组$(x_i,y_i,z_i)$,使得$x_i\geq x,y_i\geq y,z_i\geq z$的三元组个数,我们先把所有元素按$z$降序排序,每
阅读全文
摘要:解方程组:高斯消元,复杂度$O(n^3)$ 矩阵求逆:对矩阵$(A |I_n)$进行初等行变换,结果为$(I_n|A^{ 1})$,复杂度为$O(n^3)$ 只求逆矩阵的第$i$列:设$E_i$为$I_n$的第$i$列,解方程组$Ax=E_i$,向量$x$即为所求列,复杂度为$O(n^3)$,但常数
阅读全文
摘要:Portal: http://www.lydsy.com/JudgeOnline/problem.php?id=4476 解析: 首先看到分数形式我们想到分数规划,先二分答案,设当前答案为$ans$,问题变为判断是否存在$l,r$,满足$M[l,r] m[l,r] ans(r l+k) \geq0$
阅读全文
摘要:摘要: http://www.lydsy.com/JudgeOnline/problem.php?id=2733 大意: 给出$n$个结点的图和一些初始的边,每个节点有一个权值且互不相同,给出$m$个操作,每次可以在结点$u,v$之间连边,或者询问某个节点所在的连通分量的第$K$大结点编号。 解析:
阅读全文

浙公网安备 33010602011771号