—————数据结构—————
Alex_McAvoy
想要成为渔夫的猎手
展开
-
数据结构 —— 在线操作与离线操作
1.简单理解在线与离线可以简单的理解为对所有的操作是否需要读入完毕。2.基本区分在线的要求是可以不用先直到所有的操作(询问、修改等),边读入边执行,类似走一步做一步的思想。离线的要求与在线相反,必须要求知道所有的操作,类似所有操作,回头再做的思想,一般常用 query[] 数组来记录所有操作。3.常见的算法常见的在线算法:正常写题时,基本都是在线的思路,带有 “可持久化” ...转载 2019-01-24 12:44:35 · 2028 阅读 · 2 评论 -
数据结构 —— 树状数组
【概述】树状数组又称二叉索引树,常用于高效计算数列的前缀和、区间和,其查询、修改的时间复杂度为 log(n),空间复杂度为 O(n)树状数组通过将线性结构转化成树状结构,从而进行跳跃式扫描。优点:代码短小,实现简单 容易扩展到高纬度的数据缺点:只能用于求和,不能求最值 不能动态插入 数据多时,空间压力大【原理】1.对于一个普通的二叉树,叶子结点代表 A 数组的 A...转载 2019-02-14 15:45:21 · 519 阅读 · 2 评论 -
数据结构 —— 线段树
【概述】线段树是一种二叉搜索树,其存储的是一个区间的信息,每个结点以结构体的形式去存储,每个结构体包含三个元素:区间左端点、区间有端点、该区间要维护的信息(视实际情况而定),其基本思想是分治的思想。其特点是:每个节点的左孩子区间范围为 [l,mid],右孩子为 [mid+1,r] 对于结点 k,左孩子结点为 2*k,右孩子为 2*k+1,符合完全二叉树的性质线段树一般结构如图:...原创 2019-02-14 16:18:30 · 1019 阅读 · 0 评论 -
数据结构 —— 数据结构相关
【概述】ACM 中,数据结构是必不可少的一部分,对于一些逻辑简单但测试数据较大的区间查询、区间修改、单点查询、单点修改的题目,用朴素算法会导致内存超限或时间超时,因此数据结构应灵活掌握。【算法】线性表:点击这里 栈:点击这里 队列:点击这里 STL 的基本使用:点击这里 单调栈与单调队列:点击这里 并查集:点击这里 在线操作与离线操作:点击这里 离散化:点击这...原创 2019-03-12 15:16:47 · 1131 阅读 · 0 评论