01 2020 档案
发表于 2020-01-31 20:30阅读:140评论:0推荐:0
摘要:给定两个字符串和,我们需要找出一个串,其在中出现且不在中出现,这个串为子串或者子序列,求在每种情况下,该串的最短长度。 考虑到后缀自动机可以识别一个字符串的所有子串,序列自动机可以识别一个字符串的所有子序列。 那么我们直接对和两个字符串建出相应的自动机,在两个自动
阅读全文 »
发表于 2020-01-27 12:39阅读:459评论:0推荐:0
摘要:题目让我们维护一个连通无向图,边有边权,支持加边删边和询问从到的异或最短路。 考虑到有删边这样的撤销操作,那么用线段树分治来实现,用线段树来维护询问的时间轴。 将每一条边的出现时间段标记到线段树上,表示在这一段询问中这条边存在。 异或最短路的处理方法与 "最大XOR和路径" 类似,给线段
阅读全文 »
发表于 2020-01-24 15:26阅读:304评论:0推荐:0
发表于 2020-01-22 22:45阅读:367评论:1推荐:0
摘要:学习计划 DP 插头DP 数据结构 后缀平衡树 树分块 块状链表 边分治 图论 哈密顿图 平面图 对偶图 弦图 线图 区间图 数学 贝尔数 拉格朗日四平方和定理 字符串 runs 计算几何 三角剖分 平面最近点对 随机增量法 杂项 舞蹈链 回滚莫队 悬线法 在咕的博客 支配树 最小树形图 圆方树 P
阅读全文 »
发表于 2020-01-22 22:44阅读:309评论:0推荐:1
摘要: 上午鸽了,没有去学校,怕不是要被班主任暴捶 下午坐高铁,通过换座和坐了一路 北京地铁好挤,风很大,没有挤上来,好惨 老师让我们吃便饭,去吃了麦当劳 宿舍虽然是六人间,但环境很好,以及我们五个人分在了一个地方,和天津老哥分到了一个宿舍 机房很棒,北京真好,
阅读全文 »
发表于 2020-01-22 22:41阅读:322评论:0推荐:0
摘要: 上午模拟赛三个题,那无敌的也挂了 但依旧很稳,太强了,感觉他稳了 我有点小慌,感觉自己好菜,昨天的简单题也没有看出来 教练来说今天的题是针对四百分以上选手,感觉好多了(没那么自闭了) 得知明天在火车上还要考模拟赛,惊了 下午和晚上继续敲模板,树剖十五分钟一
阅读全文 »
发表于 2020-01-22 22:40阅读:172评论:0推荐:0
摘要:住四人间,我爽了 宿舍开灯有莫名的延迟??? 上床的梯子横杆很细,巨痛!!! 大家在宿舍里不断发~财~() 饭菜很便宜,早饭六元,午饭晚饭八元(因为我们被归为了国庆留校生) 山大附中和石门也来听,还有润德的一个小伙子,总共
阅读全文 »
发表于 2020-01-22 22:38阅读:239评论:0推荐:0
摘要: (下午入住) 五点到达,发现不是预想的四人间,而是八人间~~集中营~~(但还好只有六位入住)匆匆地安置住宿后,便去录播教室自习刷题了。 晚饭去办饭卡时,卡居然没了???只能明天中午再办。 一晚上只搞出了一个题,感觉自己太弱了,但是发现lyj在和女朋友聊骚,感觉自己还行,挺努力。 晚
阅读全文 »
发表于 2020-01-22 22:37阅读:304评论:0推荐:0
发表于 2020-01-22 22:36阅读:390评论:0推荐:0
摘要:考虑用和组合数学来解决。 因为原图像不规则的形状不好处理,所以先用笛卡尔树(性质为小根堆)将其划分成一个一个的矩形。 发现在笛卡尔树上的每个节点都对应一个矩形,矩形高为,宽为。 结合笛卡尔树的性质,不难得到,红色矩形所对应的节点的两个儿子为绿色矩形
阅读全文 »
发表于 2020-01-22 22:35阅读:284评论:0推荐:0
摘要:进行分析后,发现最大收益可以转化为最小代价,那么我们就可以考虑用最小割来解决这道题。 先算出总收益,总收益减去最小代价即为答案。 然后考虑如何建图,如何建立最小割的模型。 发现一个任务最终的处理只有两种情况: ① 不完成这个任务,那么我们需要支付的代价。 ② 完成这个任务,若任务
阅读全文 »
发表于 2020-01-22 22:31阅读:237评论:0推荐:0
发表于 2020-01-22 22:30阅读:188评论:0推荐:0
摘要:最小树形图(朱刘算法) 二分答案。 由题意得,我们要在一些有向边中选出一些边,使号节点能够到达其他节点,使距离之和,并且使每条边中的带宽的最小值最大。 为方便起见,我将号节点都,转为号节点。 第一个要求用
阅读全文 »
发表于 2020-01-22 22:27阅读:210评论:0推荐:0
摘要:首先进行贪心,发现海拔有梯度时一定是不优的,最优的情况是海拔像断崖一样上升,也就是左上角有一片海拔高度为,右下角有一片海拔高度为。 发现这样的性质后,不难想到用最小割来解决问题,但数据规模过大,需要进行优化。 考虑到网格图是特殊的平面图,那么我们就将平面图转化为对偶图,通过对偶图求最短路
阅读全文 »
发表于 2020-01-22 22:26阅读:275评论:0推荐:0
发表于 2020-01-22 22:25阅读:138评论:0推荐:0
发表于 2020-01-22 22:22阅读:247评论:0推荐:0
摘要:从题面中四元组限制选择车子型号,不难想到这题要用解决。 考虑转化为模型,发现除地图外,其他地图都只有两种车子型号可以参加,那么就把这两种型号转化为两种状态。 若,则状态为和。 若,则状态为和
阅读全文 »
发表于 2020-01-22 22:20阅读:209评论:0推荐:0
发表于 2020-01-22 22:19阅读:213评论:0推荐:0
摘要:本题要求我们支持三种操作: ① 点向点连边。 ② 点向区间连边。 ③ 区间向点连边。 然后跑最短路得出答案。 考虑使用线段树优化建图。 建两颗线段树,入树和出树,每个节点为一段区间的原节点集合。入树内部为儿子向父亲连有向边,出树内部为父亲连有向边,因为入树和出树的叶子节点都为原图中的点,所以两棵树的
阅读全文 »
发表于 2020-01-22 22:17阅读:132评论:0推荐:0
摘要:给定一棵二叉树,叶子节点有权值,可以进行若干次交换一个节点的左右儿子的操作,使前序遍历叶子的逆序对最少。 考虑一个节点下子树逆序对的产生: ① 只在左子树中产生。 ② 只在右子树中产生。 ③ 在左子树和右子树中交叉产生。 因为二叉树的性质,所以 ① ② 两种情况只需递归下去求解,只需考虑情况 ③ 。
阅读全文 »
发表于 2020-01-22 22:16阅读:164评论:0推荐:0
摘要:根据题意,我们不难发现忍者之间的关系是树形结构。 发现答案的统计只是在该节点的子树中,因此我们考虑通过树形来解决问题。 从叶子节点开始,从下往上考虑,因为一个节点的最优答案只与他的领导力和在子树中选了几个点有关,与选哪些点无关,所以我们要最大化选点的个数。 贪心策略即为尽可能的多选点,当选出
阅读全文 »
发表于 2020-01-22 22:15阅读:211评论:0推荐:0
发表于 2020-01-22 22:14阅读:311评论:0推荐:0
摘要:根据毛毛虫的定义,我们不难发现在双连通分量中的点我们都需要进行合并操作,所以我们先进行缩边双连通分量,使原图变成一棵树,缩点对答案产生的贡献为每个双连通分量的 然后我们继续考虑树的情况,发现,若要将树变成毛毛虫,最优的操作是保留叶子节点和除去叶子后的直径,于是我们记录
阅读全文 »
发表于 2020-01-22 22:13阅读:225评论:0推荐:0
摘要:这个题和弹飞绵羊基本上完全一致 我的做法是用维护信息,开一个节点,表示到此节点时,小球会弹飞,那么查询弹多少次即为 最后一次落在哪个洞可以用维护链上最大值来解决 一些小细节看代码就行了
阅读全文 »
发表于 2020-01-22 22:12阅读:309评论:0推荐:0
摘要:模拟赛考到了这个题,但我傻傻的用了,于是爆了零 后来才想明白,因为搜索树的分支很多,但答案的深度却又没有那么深,所以在这里,而一路搜到底的做法则会稳稳地飞掉 其他细节请看代码注释 #include<bits/stdc++.h> #define
阅读全文 »
发表于 2020-01-22 22:11阅读:270评论:0推荐:0
摘要:用计算器算一算,就可以发现的数,被开方次后就变为了。 所以我们可以直接暴力的进行区间修改,若这个数已经到达,则以后就不再修改(因为开方后还是),用并查集和树状数组进行维护。 这个方法用了 "P2391 白雪皑皑" 的思想处理,用并查集标记该点已经不再用
阅读全文 »
发表于 2020-01-22 22:10阅读:172评论:0推荐:0
摘要:思路与 "中位数" 一题,解决方案比较像,使用对顶堆来解决。 具体实现为,使用两个堆,大根堆维护较小的值,小根堆维护较大的值,即小根堆的堆顶是较大的数中最小的,大根堆的堆顶是较小的数中最大的。 将大于大根堆堆顶的数(比所有大根堆中的元素都大)的数放入小根堆,小于等于大根堆堆顶的数(比所有小根堆中的元
阅读全文 »
发表于 2020-01-22 22:09阅读:163评论:0推荐:0
摘要:可以事先打表观察每个数的约数个数,观察到如果进行替换,若干次后这个数便会被替换成1。 所以我们可以直接暴力的进行区间修改,若这个数已经到达1或2,则以后就不再修改,用并查集和树状数组进行维护。 这个方法用了P2391 白雪皑皑的思想处理,用并查集标记该点已经不再用替换。 code: #include
阅读全文 »
发表于 2020-01-22 22:08阅读:164评论:0推荐:0
摘要:这道题因为要求价值最大值,所以正方形应尽可能多覆盖目标,因此所得的正方形四个顶点一定在格点上。 经过分析后,我们就可以知道,该题做法就是用二维前缀和进行事前预处理,然后一个一个枚举每个点覆盖到的总价值。 注意点: 1.为了防止被xi=0和yi=0的情况坑和方便进行前缀和优化处理,我们可以将每个点的坐
阅读全文 »
发表于 2020-01-22 22:06阅读:727评论:0推荐:0
发表于 2020-01-22 22:04阅读:674评论:0推荐:0
发表于 2020-01-22 22:03阅读:425评论:0推荐:1
摘要:是一种可以高效处理维空间信息的数据结构 具有二叉搜索树的形态,二叉搜索树上的每个结点都对应维空间内的一个点。其每个子树中的点都在一个维的超长方体内,这个超长方体内的所有点也都在这个子树中 同时用和来记录划分出的子空间的边界
阅读全文 »
发表于 2020-01-22 22:02阅读:159评论:0推荐:0
摘要:笛卡尔树是一棵二叉树,每个节点的编号满足二叉搜索树的性质,即二叉树的中序遍历是原数列,每个节点的权值满足堆的性质,也就是说,就是笛卡尔树 在笛卡尔树上两个点的就是这一区间的最值 用增量法来建树,维护一个单调栈,栈内元素为右子树链 因为每个节点最多进栈出栈一次,所以时间复杂度是
阅读全文 »
发表于 2020-01-22 22:00阅读:124评论:0推荐:0
摘要:
阅读全文 »
发表于 2020-01-22 21:59阅读:211评论:1推荐:0
发表于 2020-01-22 21:58阅读:141评论:0推荐:0
摘要:
阅读全文 »
发表于 2020-01-22 21:08阅读:218评论:0推荐:0
摘要:
阅读全文 »
发表于 2020-01-22 21:07阅读:248评论:0推荐:0
发表于 2020-01-22 21:05阅读:240评论:0推荐:0
摘要:高斯消元用来求解线性方程组 构造增广矩阵,然后对增广矩阵消元 每次选取这一列绝对值最大的值作为主元,可以避免精度误差,如果发现这一列都为,则方程无解 然后将主元系数化为,矩阵化为上三角矩阵后,便可以回代求解 支持判是否多解 高斯消元还可以用来求逆矩阵 一个矩阵若可以
阅读全文 »
发表于 2020-01-22 21:04阅读:518评论:0推荐:0
发表于 2020-01-22 21:03阅读:131评论:0推荐:0
发表于 2020-01-22 21:02阅读:172评论:0推荐:0
发表于 2020-01-22 21:01阅读:207评论:0推荐:0
发表于 2020-01-22 20:58阅读:175评论:0推荐:0
摘要:给定树上一些点集,处理和该点集有关的询问,通常这些询问需要用树形解决 若发现所有询问的点集总大小,那么就可以考虑用虚树来解决 若原树为 若询问点为,则虚树为 若询问点为,则虚树为 构造出的虚树为询问点和询问
阅读全文 »
发表于 2020-01-22 20:57阅读:119评论:0推荐:0
摘要:用朱刘算法来实现
阅读全文 »
发表于 2020-01-22 20:56阅读:123评论:0推荐:0
摘要:
阅读全文 »
发表于 2020-01-22 20:55阅读:230评论:0推荐:0
发表于 2020-01-22 20:54阅读:105评论:0推荐:0
发表于 2020-01-22 20:53阅读:201评论:0推荐:0
摘要:在一个树形数据结构上的每个节点都是一个树形数据结构 支持操作 ① 查询在区间内的排名(通过线段树来合并区间来统计答案) ② 查询区间内排名为的值(通过二分实现,用查询排名来) ③ 修改某一位值上的数值(线段树单点修改,同时更新平衡树) ④ 查询在区间内的前驱(通过线段
阅读全文 »
发表于 2020-01-22 20:51阅读:165评论:0推荐:0
摘要:是一种特殊的逻辑判定问题 其为一串布尔变量,每个变量只能为真或假。要求对这些变量进行赋值,满足布尔方程 对每个变量,规定为其状态,为其状态 从向连一条有向边表示选了后必须选 缩点后,若存在和在同一个强连通分量
阅读全文 »
发表于 2020-01-22 20:50阅读:269评论:0推荐:0
发表于 2020-01-22 20:49阅读:175评论:0推荐:0
摘要:单调递增:队内元素为递增 单调递减:队内元素为递减 队内可存储下标,也可存储元素
阅读全文 »
发表于 2020-01-22 20:47阅读:128评论:0推荐:0
摘要:单调递增栈:栈顶到栈底为递增,数据出栈的序列为单调递增序列 单调递减栈:栈顶到栈底为递减,数据出栈的序列为单调递减序列 栈内可存储下标,也可存储元素
阅读全文 »
发表于 2020-01-22 20:46阅读:113评论:0推荐:0
摘要:通过分治来用一个子问题来计算对另一个子问题的贡献,先考虑前半部分,再考虑后半部分,再考虑前半部分对后半部分的影响 处理修改独立,询问可离线的一类问题,对时间分治,用左边的修改处理右边的询问 可以用来解决三维偏序问题 "陌上花开" cpp void cdq(int l,int r)
阅读全文 »
发表于 2020-01-22 20:45阅读:104评论:0推荐:0
摘要:左偏树可以用来维护可并堆(并查集加堆) 可以用并查集一样的路径压缩来优化复杂度 路径压缩后记录的就不为其原树中的父亲,而是用来表示堆与堆之间的关系 表示该节点到它子树内最近的叶子节点的距离 节点的左儿子的距离不小于右儿子的距离,每次合并时,将一棵树合并到另一棵树的右子树,来保证复
阅读全文 »
发表于 2020-01-22 20:44阅读:210评论:0推荐:0
摘要:将矩形分成上边和下边,用四元组来表示一条边,其中时,其为下边,时,其为下边, 扫描线从下往上扫,每次遇到一条上边或下边时,就停下来 用线段树维护,线段树的每个区间即为轴上的区间,因数据过大,所以将轴上的点离散化处理,那么就可以通过线段树的区间合
阅读全文 »
发表于 2020-01-22 20:41阅读:161评论:0推荐:0
摘要:Graham算法 先找出以值为第一关键字和以值为第二关键字最小的点,以其作为基准点 然后对剩下的点进行极角序排序 向栈中加点,并维护凸性,最终栈中的点即为凸包上的点 复杂度即为排序的复杂度
阅读全文 »
发表于 2020-01-22 20:40阅读:480评论:0推荐:1
摘要:概要 后缀自动机可以理解为是将字符串所有后缀所建出的 进行压缩后得出的 。 对于一个子串 ,它结束位置的集合称为 ,如 ,\(\text{endpos}(ab)=\{4,8\},\text{en
阅读全文 »
发表于 2020-01-22 20:39阅读:140评论:0推荐:0
发表于 2020-01-22 20:37阅读:295评论:0推荐:0
摘要:
阅读全文 »
发表于 2020-01-22 20:35阅读:315评论:0推荐:0
发表于 2020-01-22 20:34阅读:194评论:0推荐:0
发表于 2020-01-22 20:33阅读:221评论:0推荐:0
摘要:
阅读全文 »
发表于 2020-01-22 20:32阅读:584评论:0推荐:0
发表于 2020-01-22 20:31阅读:225评论:0推荐:0
发表于 2020-01-22 20:30阅读:222评论:0推荐:0
摘要:(动态树)用实链剖分来实现,维护的对象为一个森林,将原树剖分为若干个辅助树,辅助树用来维护 辅助树内部用实边连接,辅助树之间用虚边连接,虚边总是由一棵指向另一棵的根,即为其中序遍历的第一个点 因为虚边是之间
阅读全文 »
发表于 2020-01-22 20:29阅读:229评论:0推荐:0
摘要:点分治用来处理树上路径问题,每一次将树分治为几棵子树,然后继续递归,得到答案 每次分治时,子树的根选取为其的重心,递归的子树大小不会超过原树大小的一半,保证了时间复杂度为 利用容斥原理统计答案 树上有多少对点,满足两点间的距离小于等于 void
阅读全文 »
发表于 2020-01-22 20:25阅读:188评论:0推荐:0
摘要:主席树节点中维护的值,是之间这个区间内数字出现了的次数 利用可持久化线段树的性质来进行查询,如查询区间,即将版本五和版本一对应节点相减,即为内某个范围内的数字的个数 对于一个区间,每次算出在范围内的数字个数,如果数量$
阅读全文 »
发表于 2020-01-22 20:24阅读:188评论:0推荐:0
摘要:合并不采用路径压缩,保证每次合并只修改一个节点的父亲,使当前版本与上一版本共用的节点尽可能的多 为防止并查集退化成链,采取按秩合并 :
阅读全文 »
发表于 2020-01-22 20:23阅读:176评论:0推荐:0
发表于 2020-01-22 20:22阅读:403评论:0推荐:1
发表于 2020-01-22 20:21阅读:124评论:0推荐:0
摘要:构建字典图实现自动跳转,构建失配指针实现多模式匹配 指针表示文本串在当前节点失配后,我们应该到哪个节点去继续匹配, 的 指针指向 表示从根到 的字符串为从根到的字符串的最长后缀,用 来构建
阅读全文 »
发表于 2020-01-22 20:20阅读:180评论:0推荐:0
摘要:void insert(ll x) { for(int i=50;i>=0;--i) { if(x&((ll)1<<i)) { if(!a[i]) { a[i]=x; break; } else x^=a[i]; } } } ll query_max() { ll ans=0; for(int i=
阅读全文 »
发表于 2020-01-22 20:19阅读:120评论:0推荐:0
发表于 2020-01-22 20:18阅读:140评论:0推荐:0
发表于 2020-01-22 20:17阅读:186评论:0推荐:0
发表于 2020-01-22 20:16阅读:119评论:0推荐:0
发表于 2020-01-22 20:14阅读:135评论:0推荐:0
发表于 2020-01-22 20:13阅读:155评论:0推荐:0
发表于 2020-01-22 20:12阅读:269评论:0推荐:0
摘要:二叉查找树,对于任意一个节点,该节点的关键码大于它的左子树中任意节点的关键码,该节点的关键码小于它的右子树中任意节点的关键码,且没有键值相等的点 二叉查找树的中序遍历是一个关键码单调递增的节点序列 数组及变量 节点的父节点 节点的左儿子 $so
阅读全文 »
发表于 2020-01-22 20:11阅读:238评论:0推荐:0
摘要:概念: 重儿子:父亲结点的所有儿子中子树结点数目最多(最大)的结点 轻儿子:父亲结点中除了重儿子以外的儿子 重边:父亲结点和重儿子连成的边 轻边:父亲结点和轻儿子连成的边 重链:由多条重边连接而成的路径 轻链:由多条轻边连接而成的路径 性质: 在轻边中,\(size(u)/
阅读全文 »
发表于 2020-01-22 20:10阅读:241评论:0推荐:0
摘要:判负环 跑时,设表示从入队次数,若更新时, ,则说明图中有负环,算法正常结束,则图中无负环 bool spfa() { queue<int> q; dis[1]=0; vis[1]=true; q.push(1); wh
阅读全文 »
发表于 2020-01-22 20:09阅读:138评论:0推荐:0
摘要:可以通过两次或求出树的直径,从任意结点出发,搜索得出直径的一个端点,然后从这个端点继续搜索,得出另一个端点,但无法处理负边权 : 也可以用树形求直径,考虑每个结点,求出经过结点的最长链长度,则树的直径长度就是这些最长链长度的最大值,但无法求出直径的
阅读全文 »
发表于 2020-01-22 20:08阅读:164评论:0推荐:0
摘要:,即最近公共祖先,是指在有根树中,找出某两个结点和最近的公共祖先 倍增法求,核心本质是让两个结点每次向上走2的幂次步 先处理出倍增数组,为从结点向上走步后能走到的结点 再将两个点移到同一深度 最后开始倍增来跳深度,应用了
阅读全文 »
发表于 2020-01-22 20:07阅读:130评论:0推荐:0
摘要:拓扑排序是选择入度为的点来进行的一个过程,求出拓扑序列 点之间的关系有并列关系和先后关系,因为并列关系的存在,所以拓扑序列不一定是唯一的 : "车站分级" ,巧妙建图,然后用拓扑的性质得出答案 "菜肴制作" ,建反图跑拓扑
阅读全文 »
发表于 2020-01-22 20:06阅读:150评论:0推荐:0
发表于 2020-01-22 20:05阅读:183评论:0推荐:0
摘要:由数据范围得出状态,如 "乌龟棋" 和 "杨老师的照相排列" ,分别为用了某种牌几张和某排站了多少人,乌龟棋用牌的使用情况也反映了当前的位置,其实也是根据题意模拟。 根据题意,设置状态,使设置的状态能够覆盖到所有情况,并可以很好的进行转移,如 "移动服务" ,将员工的位置设为状态,并可以进一步优化,
阅读全文 »
发表于 2020-01-22 20:04阅读:597评论:0推荐:2
摘要:有向图 搜索树 对有向图进行 时,递归经过的有向边形成的树,被称为搜索树。 树边:边 在搜索树中。 前向边:搜索树中存在一条 到 的路径。 后向边:搜索树中存在一条 到 的路径。 横叉边:搜索树中不存在
阅读全文 »
发表于 2020-01-22 20:03阅读:277评论:0推荐:0
摘要:二分图匹配(匈牙利算法) 匈牙利算法就是用增广路求最大匹配问题 可以理解为是左部图被匹配 时间复杂度为,但事实上,对于绝大部分的二分图,匈牙利算法都跑不够上限 此时储存的为右部图所对应左部图的匹配 : bool dfs(int x) { for(i
阅读全文 »
发表于 2020-01-22 20:02阅读:140评论:0推荐:0
摘要: 先把边按照权值进行排序,用贪心的思想优先选取权值较小的边,并依次连接,若出现环则跳过此边(用并查集来判断是否存在环)继续搜,直到已经使用的边的数量比总点数少一即可。 : 其他 若原图不连通,即建出的是一个森林,要结合题意再进行处理,如 "货车运输" ,跑完最大生成树后
阅读全文 »
发表于 2020-01-22 20:01阅读:247评论:0推荐:0
摘要: 多源最短路算法,用邻接矩阵存储,可以处理负边权,不能处理负环,本质是个。 需要三层循环,时间复杂度为,在稠密图中有优势。 记得数组要初始化成正无穷(不相连的点之间),并且自己到自己的距离为,即。 \(code\
阅读全文 »
发表于 2020-01-22 20:00阅读:124评论:0推荐:0
发表于 2020-01-22 19:58阅读:138评论:0推荐:0
发表于 2020-01-22 19:57阅读:144评论:0推荐:0
发表于 2020-01-22 19:56阅读:305评论:0推荐:0
摘要:字典树就是把所有单词插入一颗搜索树里。这样可以在线性时间内完成查找和维护信息。 应用有, "于是他错误的点名开始了" 和 "补退选" 。 :
阅读全文 »
发表于 2020-01-22 19:54阅读:145评论:0推荐:0
摘要:一般的字符串哈希:我们设置一个进制,把这个串看做一个进制数。 然后对一个比较大的质数取模。 这种方法在随机情况下冲突的概率比较小,除非对着哈希构造方法卡。 模数一般选用一个较大的质数来减小冲突的概率
阅读全文 »
发表于 2020-01-22 19:53阅读:261评论:1推荐:0
摘要:阶段只要不涉及区间翻转、区间插入的序列问题都可以用线段树实现。 每一个节点维护一个区间的信息。 线段树有分治的感觉。 线段树可以处理很多符合结合律的操作。 时间复杂度,建树为,区间查询和区间修改为。 空间要开原序列长度的四倍。 查询的话就是序列分割,由于
阅读全文 »
发表于 2020-01-22 19:52阅读:125评论:0推荐:0
发表于 2020-01-22 19:50阅读:151评论:0推荐:0
摘要:并查集为森林的结构。有多棵多叉树,每个树的根结点定义为这棵树中元素的代表结点。 用于查询两个点是否在同一集合内,以及合并两个集合。 并查集妙用,如 "白雪皑皑" 和 "求和并替换" 。 带有偏移量的并查集,如 "银河英雄传说" 和 "食物链" 。 :
阅读全文 »
发表于 2020-01-22 19:49阅读:129评论:0推荐:0
摘要:因为堆是一棵完全二叉树,所以对于一个节点数为的堆,它的高度不会超过 ,所以对于插入,删除操作复杂度为 ,查询堆顶操作的复杂度为。 可以用来维护若干贪心题,如 "数据备份" (用堆来实现反悔), "超市" (也是一种反悔)。 用对顶堆(一个大根堆
阅读全文 »