随笔分类 - .整理|总结
摘要:洲阁筛 给定一个积性函数$F(n)$,求$\sum_{i = 1}^{n}F(n)$。并且$F(n)$满足在素数和素数次幂的时候易于计算。 显然有: $\sum_{i = 1}^{n} F(n) = \sum_{i = 1}^{\sqrt{n}}F(i) \left(\sum_{\sqrt{n} <
阅读全文
摘要:从这里开始 预备知识 两个数组 Tarjan 算法的应用 求割点和割边 求点-双连通分量 求边-双连通分量 求强连通分量 从这里开始 预备知识 两个数组 Tarjan 算法的应用 求割点和割边 求点-双连通分量 求边-双连通分量 求强连通分量 求割点和割边 求点-双连通分量 求边-双连通分量 求强连
阅读全文
摘要:题目传送门 通往???的传送点 通往神秘地带的传送点 通往未知地带的传送点 题目大意 给定一个串$s$,要求将$s$划分为$t_{1}t_{2}\cdots t_{k}$,其中$2\mid k$,且$t_{i} = t_{k - i}$,问方案数。 题目传送门 通往???的传送点 通往神秘地带的传送
阅读全文
摘要:(觉得自己快没了,赶紧完成想做的事) 最大公约数是数论中很常见的一个知识。本文将从数学和信息学两个方面简单谈一下它。 从这里开始 带余数除法 最大公约数理论 解不定方程 从这里开始 带余数除法 最大公约数理论 解不定方程 带余数除法 定理1.1(带余数除法) 设$a, b$是两个给定整数,且$a \
阅读全文
摘要:从这里开始 一个有趣的问题 扩展Lucas算法 从这里开始 一个有趣的问题 扩展Lucas算法 一个有趣的问题 题目大意 给定$n, m, p$,求$C_{n}^{m}$除以$p$后的余数。 题目大意 给定$n, m, p$,求$C_{n}^{m}$除以$p$后的余数。 Subtask#1 $0\l
阅读全文
摘要:从这里开始 离散对数和BSGS算法 扩展BSGS算法 从这里开始 离散对数和BSGS算法 扩展BSGS算法 离散对数和BSGS算法 设$x$是最小的非负整数使得$a^{x}\equiv b\ \ \ \pmod{m}$,则$x$是$b$以$a$为底的离散对数,记为$x = ind_{a}b$。 假如
阅读全文
摘要:从这里开始 动态树问题和Link Cut Tree 一些定义 access操作 换根操作 link和cut操作 时间复杂度证明 Link Cut Tree维护链上信息 Link Cut Tree维护子树信息 小结 从这里开始 动态树问题和Link Cut Tree 一些定义 access操作 换根操
阅读全文
摘要:An Old but Classic Problem 给定一个$n$个点,$m$条边的带正权有向图。给定$s$和$t$,询问$s$到$t$的所有权和为正路径中,第$k$短的长度。 Notice 定义两条路径不同,当且仅当它们的边集中存在一条边,使得它只在其中的一条路径上。 An Old but Cl
阅读全文
摘要:无旋转Treap是一个神奇的数据结构,能够支持插入,删除,查询k大,查询某个数的排名,查询前驱后继,支持各种区间操作和持久化。基于旋转的Treap无法实现区间反转等操作,但是无旋Treap可以轻易地支持区间操作。那为什么区间操作不用Splay而要去学无旋转Treap?原因很简单,Splay的时间复杂
阅读全文
摘要:带修改莫队 有这么一类问题,毒瘤数据结构题目(比如什么树套树套树),除了询问还有修改,然而支持离线,能快速地在区间首尾添加/删除元素。 普通莫队可以看做是将每个询问看成了一个二元组 (l, r) 。每次修改可以看成时间往后移动了一个单位。所以对于带修改莫队将每个询问看成三元组 (l, r, t) 、
阅读全文
摘要:(如果读到任何有问题的地方,请先阅读文章末尾) (这里做一个约定,下文中的$\mod n$表示对$n$取模的剩余) 快速傅里叶变换(Fast Fourier Transform,简称FFT)常用于加速卷积运算(例如多项式乘法、大整数乘法)。 虚数和复数 当学习平方根的时候会不会出现这样一个疑问等于多
阅读全文
摘要:树状数组是一种常用的数据结构,能够在O(log2n)的时间内进行单点修改和求前缀和。因为代码量小、常熟小往往在某些应用中快于线段树(当然有些问题是不能呢用树状数组完成的)。 最基本的树状数组 方法1:用一个数组,O(1)修改, O(n)查询 方法2:求前缀和,O(n)修改,O(1)查询 以上两种方法
阅读全文
摘要:( 转载请注明原帖地址http://www.cnblogs.com/yyf0309/p/LeftistTree.html ,转载不注明地址必究 ) 左偏树是可并堆的一种实现。对比一下普通的堆和左偏树 插入 取出顶部元素 弹出 合并 普通的堆 $O(\log n)$ $O(1)$ $O(\log n)
阅读全文
摘要:stl中的vector是竞赛中常用的容器,原因在于省内存,$O(1)$ 在后端插入和删除、随机下标访问,今天就来谈谈它的实现。 最简单的一个动态数组 动态数组并不是真正意义上的动态的内存,而是一块连续的内存,当添加新的元素时,容量已经等于当前的大小的时候(存不下了),执行下面3步 重新开辟一块大小为
阅读全文
摘要:Burnside定理主要用于解决这样一类问题,用n种颜色为一个物体着色,当一种着色通过一些变换得到的另一种着色,我们认为它们是用一种着色,求本质不同的着色方案。(详细的适用条件将在下文阐述) 现在用一个简简单单为问题进行引入,用红色和蓝色两种颜色对一个正五边形进行染色,如果两种染色可以通过旋转或者翻
阅读全文
摘要:莫队算法(由莫涛发明的)是一种离线的暴力算法(至少我这么认为)。使用莫队算法的条件是,知道一个区间[l, r]的结果,那么也可以快速知道[l + 1, r],[l - 1, r], [l, r - 1], [l, r + 1]这四个区间的结果。于是可以想到,直接通过这样转移来解决一些问题。当然有些出
阅读全文
摘要:树链剖分可以算是一种数据结构(一大堆数组,按照这个意思,主席树就是一大堆线段树)。将一棵树分割成许多条连续的树链,方便完成一下问题: 前两个内容可以用其他方式解决,但是下面两种操作倍增、st表,dfs序就很难解决(解决当然可以解决,只是耗时长点而已)。下面开始步入正题。 树链剖分的主要目的是分割树,
阅读全文
摘要:1#树上倍增 以前写的博客:http://www.cnblogs.com/yyf0309/p/5972701.html 预处理时间复杂度O(nlog2n),查询O(log2n),也不算难写。 2#st表(RMQ) 首先对一棵树进行dfs,得到欧拉序列,记录下每个节点的第一次出现位置。 (先序遍历这棵
阅读全文
摘要:替罪羊树是不通过旋转而是重构来维护节点平衡的一种平衡树。当某一棵子树的节点总数超过其父节点的一定时,就进行重构操作。 目录 节点定义 重构操作 插入操作 删除操作 其他各种操作 完整代码&总结 目录 节点定义 为了判断是否需要重构,所以需要加入cover(实际节点个数)域。这次直接加入可重操作,所以
阅读全文
摘要:Splay树,又叫伸展树,可以实现快速分裂合并一个序列,几乎可以完成平衡树的所有操作。其中最重要的操作是将指定节点伸展到指定位置, 目录 节点定义 旋转操作 伸展操作 插入操作 删除操作 lower_bound&upper_bound 前驱后继操作 可重Splay 名次操作 区间操作 目录 节点定义
阅读全文