随笔分类 -  模板

1
摘要:就是把树动态轻重链剖分,用splay维护每一条重链啦。 转载一篇: 本家 分割线 概念、性质简述 首先介绍一下链剖分的概念(感谢laofu的讲课)链剖分,是指一类对树的边进行轻重划分的操作,这样做的目的是为了减少某些链上的修改、查询等操作的复杂度。目前总共有三类:重链剖分,实链剖分和并不常见的长链剖 阅读全文
posted @ 2018-04-03 18:57 泪寒之雪 阅读(465) 评论(0) 推荐(0) 编辑
摘要:题链 SOL:我们来讲一下树上莫队。 前置技能:莫队,括号序列 我们如果要维护子树的信息的话,只要把树展开成DFS序就好了。 那么如果是路径呢? 1 / | \ 2 3 4 | 5 我们在进入和退出一个节点时都把这个点扔到序列里,那么我们发现上面这个数的序列为: 1 2 2 3 5 5 3 4 4 阅读全文
posted @ 2018-03-29 21:27 泪寒之雪 阅读(388) 评论(0) 推荐(0) 编辑
摘要:经典引文 空间效率:O(n) 时间效率:O(log n)插入、查找、删除 创造者:Daniel Sleator 和 Robert Tarjan 优点:每次查询会调整树的结构,使被查询频率高的条目更靠近树根。 Tree Rotation 树的旋转是splay的基础,对于二叉查找树来说,树的旋转不破坏查 阅读全文
posted @ 2018-03-15 20:34 泪寒之雪 阅读(179) 评论(0) 推荐(0) 编辑
摘要:板子贴(很多都是以前打的,码风不太一样,以后有时间重新打一遍吧。) 总板子: #pragma GCC optimize("-O2") #include<bits/stdc++.h> #define getchar nc #define min(a,b) ((a)<(b)?(a):(b)) #defi 阅读全文
posted @ 2018-01-21 11:08 泪寒之雪 阅读(516) 评论(0) 推荐(0) 编辑
摘要:为了改变数论只会GCD的尴尬局面,我们来开一波数论: 数论函数: 数论函数是定义域在正整数的函数。 积性函数: f(ab)=f(a)f(b),gcd(a,b)=1 ,完全积性函数: f(ab)=f(a)f(b) 。 常见积性函数: φ(n) ,μ(n) (莫比乌斯函数), d(n) (因子个数),  阅读全文
posted @ 2018-01-20 18:32 泪寒之雪 阅读(956) 评论(0) 推荐(0) 编辑
摘要:CDH分治,核心思想就是对操作进行二分。感觉和我以前对操作分块的思想很像啊,fhb分块 ……(⊙o⊙)… 日常懒得写模板的题解,转载一篇(本家) 分割线 在线/离线:首要考虑 在线算法: 可以以序列化的方式一个一个的处理输入,不必事先知道所有输入数据 离线算法: 必须事先知道所有的输入数据 (例如选 阅读全文
posted @ 2018-01-18 21:11 泪寒之雪 阅读(344) 评论(0) 推荐(0) 编辑
摘要:原题链接 这道题的真谛在于暴力加剪枝。 那么我们应该怎么暴力呢? 隆重推出A*搜索算法。 我们知道平时的bfs,dfs都是盲目的搜索,但是如果一道题的可行解我们大致知道方向的话,我们如果采取盲目搜索,未免太浪费时间了。 我们可以改变搜索的顺序,优先搜索期望出解概率高的地方,这就是A*算法。 A*改变 阅读全文
posted @ 2018-01-17 19:34 泪寒之雪 阅读(657) 评论(0) 推荐(0) 编辑
摘要:这玩意也叫回文树。主要解决回文串的问题。 回文串是一种十分特殊的字符串,拥有很多优美的性质。近年来,算法竞赛中有关回 文串的题目比较热门,但由于与回文串相关的算法比较贫乏,导致题目的解法比较单一。回文树是一种新兴的数据结构,由Mikhail Rubinchik在2015年发表。(战斗民族发明的数据结 阅读全文
posted @ 2018-01-17 14:17 泪寒之雪 阅读(891) 评论(0) 推荐(2) 编辑
摘要:懒得自己写了,转载一篇:本家 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。 如果一个字符串正着读和反着读是一样的,那它就是回文串。下面是一些回文串的实例: 1. Brute-force 解法 对于最长回文子串问题,最简单粗暴的办法是:找到字符串的所有子串,遍历每一个子串 阅读全文
posted @ 2018-01-16 20:42 泪寒之雪 阅读(205) 评论(0) 推荐(0) 编辑
摘要:定义: 在mod P 域中,若 (a^i)!=(a^j) (0<=i,j<φ(p)) 则称其a为P的原根。 说人话就是: 如果g是P的原根,那么g的(1…P-1)次幂mod P的结果一定互不相同。 这个很重要,说明 a 是 一个群的生成元 那么我们如何求原根呢? 我们求原根,往往只要找一个就行了,那 阅读全文
posted @ 2018-01-15 21:10 泪寒之雪 阅读(523) 评论(0) 推荐(0) 编辑
摘要:点分治用来统计树上路径。 点分治的核心是分治。 我们选一个点,统计过该点的路径。然后分治每一颗子树。 我们如果选择重心的话,可以证明,最多递归logn次。 因为选择重心,我们每一次递归的子树节点数都要小于原树的一半,所以log级别。 那么我们如果统计过一点的时间是T(x),则总时间为O(logn*T 阅读全文
posted @ 2018-01-13 11:13 泪寒之雪 阅读(292) 评论(2) 推荐(0) 编辑
摘要:后缀自动机(不会点这里) 加入节点的时候记录一下这个点是不是代表后缀。建完以后重建一下后缀树在上面dfs就可以了= =(注意重建的时候是字典序排序,不是拓扑序 由于空间的关系,用map 阅读全文
posted @ 2018-01-12 17:39 泪寒之雪 阅读(447) 评论(0) 推荐(0) 编辑
摘要:后缀自动机,是一种线性的字符串处理工具: 引用一下陈立杰的PPT 有限状态自动机的功能是识别字符串,令一个自动机A,若它能识别字符串S,就记为A(S)=True,否则A(S)=False。 自动机由五个部分组成,alpha:字符集,state:状态集合,init:初始状态,end:结束状态集合,tr 阅读全文
posted @ 2018-01-12 15:45 泪寒之雪 阅读(2595) 评论(1) 推荐(0) 编辑
摘要:我们知道有可持久化线段树,那么我们自然也想到平衡树是否也能可持久化,答案是肯定的。 现在我们给出一种数据结构:Treap。 不会的点这里 我们现在发现,旋转是一种很难持久化的操作,那么我们就要尽量避免旋转操作,我们引入以下2个操作: 1.spilt 对于一个Treap,我们需要把它按照第K位拆分,那 阅读全文
posted @ 2018-01-11 15:57 泪寒之雪 阅读(1222) 评论(0) 推荐(0) 编辑
摘要:今天让我们整理一下一些常数优化技巧: 1. 读入优化: 这是一直基于getchar的快速读入。相比大家都会,不说了。 2.更快的读入优化: 我们用buf数组把所有的输入都读入到buf数组里,还要快。(此后便不能用scanf和cin了,因为输入在buf数组里了) 3.如果我们大抵知道数据输入规模,我们 阅读全文
posted @ 2017-12-30 07:37 泪寒之雪 阅读(1607) 评论(2) 推荐(2) 编辑
摘要:所谓Treap,就是一种二叉查找树,而我们知道二叉查找树,相对来说比较容易形成最坏的链表情况,所以我们有一种数据结构来防止二叉查找树出现最坏情况,那就是Treap。 Treap=tree+heap,Treap就是这样一种既是树又是堆的奇怪的东东。我们每次插入节点时,便随机的给每个节点赋给一个值,我们 阅读全文
posted @ 2017-12-24 21:22 泪寒之雪 阅读(856) 评论(0) 推荐(0) 编辑
摘要:我们有时候遇到这样一类题目,让我们维护树上路径的某些信息,这个时候发现我们无法用线段树或者树状数组来维护这些信息,那么我们就有着一种新的数据结构,树剖:将一棵树划分成若干条链,用数据结构去维护每条链,复杂度为O(logN)。 剖分方法: 盲目剖分 随机剖分 启发式剖分综合比较,启发式剖分是剖分时的最 阅读全文
posted @ 2017-12-17 20:30 泪寒之雪 阅读(319) 评论(0) 推荐(0) 编辑
摘要:我们知道我们可以通过主席树来维护静态区间第K大值。我们又知道主席树满足可加性,所以我们可以用树状数组来维护主席树,树状数组的每一个节点都可以开一颗主席树,然后一起做。 我们注意到树状数组的每一棵树都和前一颗树没有关系,so,并不需要可持久化,一个朴素的权值线段树就可以啦。 我们知道普通的线段树是刚开 阅读全文
posted @ 2017-12-02 21:31 泪寒之雪 阅读(269) 评论(0) 推荐(0) 编辑
摘要:所谓fft,只是一种快速的插值技术,我们知道,朴素的多项式乘法是N^2的。我们又知道,一个多项式可以由N个的点值来表示。那么N个点相乘,可以在O(N)内得出,fft所提供的,只是快速插值和求系数而已。 我们知道 欧拉定理, e的复数次幂满足很多优秀的性质,我们用这些性质快速求值即可。 http:// 阅读全文
posted @ 2017-12-01 20:32 泪寒之雪 阅读(677) 评论(0) 推荐(0) 编辑
摘要:NOIP ,发条题解增加rp; 树状数组维护区间和。 令 原数组为a i a1 i为 ai 到 an的共同增量, 那么 我们要求区间和 等价于求 1到x的和 (可以ask r-ask(l-1)); ask x =a1+a2+..ax+x*a1 1+(x-1)*a1 2+..a1 x 那么我们维护 a 阅读全文
posted @ 2017-12-01 20:25 泪寒之雪 阅读(189) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示