合集-算法
排序大杂烩
摘要:七个排序 这里介绍七个排序 ###选择排序 选择排序应该是最简单的排序之一 简单来说,找到剩余区间内的最小值然后放在一个有序区间的末尾 (不用纠结剩余区间什么意思,模拟一遍后你就会知道 模拟一下 假设给整个区间排序 区间内数为 4,3,6,9,8 先找整个区间中的最小值 为3,放在第一位,交换3和4
二分法
摘要:#二分 二分顾名思义 其实就不断的把东西分为两半 二分自古就有 一尺之棰,日取其半,万世不竭 《庄子·杂篇·天下》 二分在数学中,也有应用,例如零点存在性定理 只需要通过不断的二分就可以找
严格次小生成树
摘要:##严格次小生成树 ###前言 洛谷最优解rank1,u1s1快是真的快,好写是真的好写,理解也很好理解 简直酸爽,舒服了 非原创,仅作解释 ###正文 严格次小生成树,顾名思义,权值仅仅小于最小生成树 重点解释这个查询 inline int query(int x,int y,int w)//此时
FHQ 平衡树 (一)
摘要:#FHQ 平衡树 fhq 平衡树由范浩强巨佬发明,基于treap,实现无旋保持平衡 treap=tree+heap(中文翻译:树堆 其同时满足BST性质和堆性质 BST简单来说,就是一颗二叉树,根节点的左儿子节点所有值<根节点<根节点的右儿子的所有值 堆的性质,即为二叉树中,父节点的值大于等于(或小
FHQ 平衡树(二)
摘要:##FHQ 平衡树 这次以文艺平衡树为例讲解FHQ 平衡树维护区间信息 ###前言 没有PHQ基础的先看这个 平衡树(一) 区间操作 反转区间 假设反转区间[l,r] 拆分成三段x[1,l-1],y[l,r],z[r+1,n],然后操作中间区间y后合并 对区间用懒标记即可,懒标记标记左右儿子是否反转
线性复杂度优化小技巧
摘要:六个小技巧 1.前缀和 2.差分 3.双指针 4.离散化 5.单调队列 6.单调栈 前缀和 前缀和顾名思义,前面的和,具体来说就是前n项的和 sum为前缀和数组 一维前缀和 第n项的前缀和等于第n-1项前缀和+第i项数之和 \(\sum_{1}^{n}a[i]=\sum_{1}^{n-1}a[i]+
笛卡尔树
摘要:#笛卡尔树 前置知识:单调栈 基础知识 这里做点总结 笛卡尔树有两条性质 二叉搜索树 小根堆 定理:编号权值互不相同的笛卡尔树构造是唯一的 二叉搜索树满足 左儿子权值小于父节点,右儿子权值大于父节点 小根堆满足权值小于左右节点 (两个权值不能混为一谈) 因为笛卡尔树结点是由二元组(x,y)组成 x为
二分细节
摘要:二分看似简单,但需注意细枝末节 接下来简单探讨几种查询 以严格大于x的第一位数为例子 //序列为m ,x为查询的数 int find(int x){//假设序列长为n; int l=1,r=n; while(l<=r){ int mid=(l+r)>>1; if(m[mid]<=x) l=mid+1
二分总结
摘要:二分是一种高校的查找数据方式,每次查找的时间复杂度为 不过前提条件是所查找的数据具有单调性 二分 二分具有两种类型1.二分查找 2.二分答案 二分的特征,也可以理解为具有二段性, 一端满足我们的需求,另一端不满足我们的需求,一般题目会要求我们求这个临界点 二分查找 顾名思义,通
高精度计算
摘要:高精度 有四种高精度如下 (低精度意为可用long long 或int存储的数 高精度一般用于数无法用int,long long表示出来的时候使用 其本质都是用数组存数的每一位,模拟加减乘除,最后从高位输出到低位 (模拟竖式加减乘除) 高精度加法 一般从数组第一位存个位,第二位十位,第三位.....
最长公共子序列
摘要:DP的经典例题,适合学完导弹拦截后再来学习 P1439 【模板】最长公共子序列 O() 按照DP常规思考方法 我们令dp[i][j]为P1序列前i个子序列和P2序列前j个子序列的最长公共子序列长度 注意,这是一种常见的设dp状态的方式,可以积累) 所以我们进而思考状态转移
连通性
摘要:图论中的连通性相关的算法 (适合学过之后,总结复习的观看) 割边,割点,缩点 其实都有个共同的名字:tarjan 割边 对于一个连通的无向图,如果存在一条边,去除后,使其分为两个子图,无法连通,那么这个边可以称为割边 例题 炸铁路 对于一个访问过的点,且不是父节点\(low[u]=min(low[u