单调队列(学习笔记)

摘要: 建议不了解STL的读者先了解几个基本的队列的STL.这也是单调队列和单调栈一般都会用到的. 单调队列:建立一个队列,使队列一直具有单调性(满足单调递增或者单调递减),时间复杂度O(N). 那么我们应该如何做到"使队列一直具有单调性"呢? 以单调递增为例,我们O(N)扫描整个序列,每扫描到一个元素: 阅读全文
posted @ 2018-12-22 17:09 PPXppx 阅读(161) 评论(0) 推荐(0) 编辑

LCA(学习笔记)

摘要: LCA指的是最近公共祖先,更具体的意义就不讲了. 求解LCA的方法有很多,这里讲解向上标记法,树上倍增法,tarjan求LCA. 向上标记法 1 从x向上走到根节点,并标记所有经过的节点. 2 从y向上走到根节点,第一次遇到的已标记的节点就是x和y的LCA. 但不难发现,这个算法只适用于求一个点和一 阅读全文
posted @ 2018-12-22 17:08 PPXppx 阅读(145) 评论(0) 推荐(0) 编辑

emacs配置文件

摘要: ```cpp (global-set-key [f9] 'compile-file) (global-set-key (kbd "C-s") 'save-buffer) (global-set-key (kbd "C-z") 'undo) (global-set-key (kbd "RET") 'newline-and-indent) (global-linum-mode t) (show-par... 阅读全文
posted @ 2018-11-09 14:32 PPXppx 阅读(146) 评论(0) 推荐(0) 编辑

线段树(学习笔记)

摘要: 线段树 线段树是一种基于分治思想的二叉树结构,比树状数组更加通用,下文总结会比较这两种数据结构; 线段树的基本用途是对序列进行维护,支持查询与修改指令; 线段树的每个节点都代表一个区间; 线段树具有唯一的根节点,代表的是整个区间,即[1,n]; 线段树的每个叶节点都代表一个长度为1的区间,即[x,x 阅读全文
posted @ 2018-11-02 21:37 PPXppx 阅读(132) 评论(0) 推荐(0) 编辑

RMQ问题 ST算法(学习笔记)

摘要: RMQ是询问某个区间的最大值或最小值的问题,主要求解方法之一ST算法; ST算法其实是倍增思想的产物,等下看代码实现就很明显了 ST算法通常用在要多次询问一些区间的最值的问题中,相比于线段树,它的程序实现更简单,运行速度更快; ST算法没有修改操作(或者说不擅长动态修改) ST算法流程: 预处理 : 阅读全文
posted @ 2018-11-02 21:34 PPXppx 阅读(127) 评论(0) 推荐(0) 编辑

Lucas卢卡斯定理(学习笔记)

摘要: Lucas定理是用来求$C(n,m) mod $ p, p为质数 。 若P是质数,则对于任意整数1 1; } return cnt; }//快速幂 LL C(int a,int b){ if(a 阅读全文
posted @ 2018-11-02 21:20 PPXppx 阅读(134) 评论(0) 推荐(0) 编辑

tarjan算法(学习笔记)

摘要: 首先声明一下,我写这篇博客,不是想讲tarjan算法的原理,我只是总结我自己对tarjan算法与强连通分量,缩点,割点的学习;如果想认真学习tarjan算法,推荐这篇 "博客" ; 定义 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都 阅读全文
posted @ 2018-11-02 19:15 PPXppx 阅读(128) 评论(0) 推荐(0) 编辑

乘法逆元(学习笔记)

摘要: 蒟蒻最近碰到了好多对分数取模的题,一脸懵逼(~~模不是只有整数之间才有的运算么~~) 定义 若整数b,m互质,并且b整除a(a被b整除,即a是b的整数倍),则存在一个整数x,使得$a/b≡a x$(mod m),则称x为b的模m的乘法逆元,记为$b^{ 1}$(mod m); 推理: 因为$a/b= 阅读全文
posted @ 2018-11-01 14:59 PPXppx 阅读(165) 评论(0) 推荐(0) 编辑

欧拉函数 欧拉定理(学习笔记)

摘要: 欧拉函数 1~N中与N互质的数的个数被称为欧拉函数,记为$φ(N)$; 例如: $φ(1)=1$; 区间1~1内,与1互质的数为1 $φ(2)=1$, 区间1~2内,与2互质的数为1 $φ(3)=2$, 区间1~3内,与3互质的数为1,2 $φ(4)=2$; 区间1~4内,与4互质的数为1,3 通过 阅读全文
posted @ 2018-10-30 16:54 PPXppx 阅读(1167) 评论(0) 推荐(0) 编辑

LIS LCS(学习笔记)

摘要: LIS最长上升子序列 一般求解LIS有两种做法,第一种直接$n^2$暴力枚举,a数组记录原序列,设$f[i]$表示枚举到第i位(即以第i个元素结尾)的最长上升子序列的长度; LCS最长公共子序列 和LIS一样,求解LCS一般也有两种做法,一种是$n^2$的暴力做法,设$f[i][j]$表示第一个序列 阅读全文
posted @ 2018-10-29 17:08 PPXppx 阅读(129) 评论(0) 推荐(0) 编辑