学习小记
Iking123
这个作者很懒,什么都没留下…
展开
-
NOI级别的超强数据结构——Link-cut-tree(动态树)学习小记
前言 其实LCT这种东西,我去年就接触过并且打过,只不过一直没调出来。最近优化了我那又丑又长的splay打法,并且用LCT切了道题。在此做一个小结。简介 如果有一道题,让我们维护一棵树,支持以下操作: 1.链上求和; 2.链上求最值; 3.链上修改; 4.子树修改; 5.子树求和; 6.换根。 这道题用树链剖分就可以切掉了。 但如...原创 2018-01-24 16:38:15 · 12306 阅读 · 7 评论 -
斯特林数小结(update gradually...)
概念斯特林数(Stirling number)是由18世纪数学家James Stirling提出的两类数。第一类:轮换数,将n个数排成k个非空的环(圆排列,有序)的方案数,用s(n,m)s(n,m)s(n,m)或[nk]\left[ \begin{matrix}n\\k\end{matrix} \right][nk]表示。还分为无符号第一类斯特林数su(n,m)s_u(n,m)su(n,...原创 2019-01-28 08:07:27 · 316 阅读 · 0 评论 -
线性基学习小记
定义基:在线性代数中,基(也称为基底)是描述、刻画向量空间的基本工具。向量空间的基是它的一个特殊的子集,基的元素称为基向量。向量空间中任意一个元素,都可以唯一地表示成基向量的线性组合。如果基中元素个数有限,就称向量空间为有限维向量空间,将元素的个数称作向量空间的维数。同样的,线性基是一种特殊的基,它通常会在异或运算中出现,它的意义是:通过原集合S的某一个最小子集S1使得S1内元素相互异或得...原创 2018-09-10 21:29:49 · 629 阅读 · 0 评论 -
Pollard_Rho大数分解学习小记
前言该算法用于对大数进行质因子分解。它的核心思想是:对于一个数N,若N不为质数,设N=c*d(c、d均大于1),我们找到一个c,递归分解c和d。生日悖论一个班有k个同学,至少有两名学生的生日是同一天的概率P是多少?正难则反,考虑容斥。P=1-任意两名学生的生日都不同的概率。k=1,P=0k=1,P=0k=1,P=0k=2,P=1−1∗364365k=2,P=1−1∗3...原创 2018-08-24 16:50:02 · 792 阅读 · 1 评论 -
Miller_Rabin素性测试学习小记
问题给出一个正整数n,判断它是不是质数。有一个简单暴力的方法:试除法,从2枚举到n−−√n\sqrt n,如果有一个数能整除n,则表明n为合数。但这么做的时间复杂度是O(n−−√)O(n)O(\sqrt n)的,当n的规模达到1016101610^{16}甚至更高时,基本上就会跑1s以上了。有什么更快的方法?费马小定理通过费马小定理我们知道,对于一个质数p,有:ap−1≡1...原创 2018-08-24 14:40:50 · 757 阅读 · 0 评论 -
快速沃尔什变换——FWT学习小记
用途FWT主要解决这样的问题,给出A(x),B(x),求Ck=∑i⊗j=kAjBkCk=∑i⊗j=kAjBkC_k=\sum_{i\otimes j=k}A_jB_k,其中⊗⊗\otimes表示and(按位与)/or(按位或)/xor(按位异或)运算中的一种。定义首先,A(x)可以表示成一个n维向量(a0,a1,...,an−1)(a0,a1,...,an−1)(a_0,a_...原创 2018-08-17 19:50:27 · 635 阅读 · 0 评论 -
启发式合并(堆、set、splay、treap)/线段树合并学习小记
启发式合并刚听到这个东西的时候,我是相当蒙圈的。特别是“启发式”这三个字莫名的装逼,因此之前一直没有学。实际上,这个东西就是一个SB贪心。以堆为例,若我们要合并两个堆a、b,我们有一种极其简单的做法:那就是比较一下它们的大小,将小的堆的每个元素依次插入到大的堆中。不妨设|a|≤|b||a|≤|b||a|≤|b|,则时间复杂度即为:O(|a|∗log2(|a|+|b|))O(|a|∗log...原创 2018-08-15 21:56:42 · 2057 阅读 · 1 评论 -
圆方树/广义圆方树学习小记(gradually update...)
前言 日前,B组混进了几道仙人掌/无向图上乱搞的问题。正解就是这种我之前听都没听说过的数据结构——圆方树。定义仙人掌 先允许我介绍一下仙人掌。 一般而言,仙人掌的定义是:1)无向图;2)每条边最多在一个简单环中。这样就很毒瘤。 但有一些题不大一样,它的定义是这样的(据说国外的定义都是这样):1)无向图;2)每个点最多在一个简单环中。 不过,你不必太担心...原创 2018-07-14 21:44:10 · 2043 阅读 · 0 评论 -
欧拉路径(Euler path)/欧拉回路(Euler circuit)/欧拉图(Euler Graph)小结
前言 想象一下你碰到了哈密顿回路类的问题(NPC问题),但又要在可观的多项式时间内解出。这时,应该怎么破? 欧拉回路(P问题)闪亮登场!!!它只需你巧妙地重新建一下模,就可以O(n+m)O(n+m)O(n+m)(n为点数,m为边数)从容解决!定义 欧拉路:通过图中所有边的简单路。(换句话说,每条边都通过且仅通过一次) 欧拉回路:闭合的欧拉路。(即一个环,保证每条边都通过...原创 2018-07-03 22:29:34 · 22392 阅读 · 1 评论 -
nim游戏/阶梯nim游戏+SG函数/SG定理
引子 考虑下面一个问题: 给出N堆石子。A 和 B 轮流操作,A 先手。操作者在每一轮中必须取走一堆石子中的任意数量个石子(不能不取)。取完最后一个石子的人胜利。求谁胜。SG函数 对于每一堆石子,我们可设SG(i)=mex({SG(j)}),其中j为i的一种转移,而mex表示集合中最小没有出现过的自然数。设边界条件SG(0)=0。这样的话,SG(x)=x,且当SG(x)为0时...原创 2018-06-13 18:53:08 · 701 阅读 · 0 评论 -
哈夫曼编码(Huffman Coding)理解+哈夫曼树(Huffman Tree)构造方法
前言 其实这个东西我在NOIP2017初赛前就已经学过了(做往年的NOIP初赛题备战的时候碰到的),只不过一直没有用,于是就忘记了。。。哈夫曼编码简介 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有...原创 2018-05-26 17:47:03 · 2440 阅读 · 0 评论 -
回文串问题的克星——Palindrome Tree(回文树)/Palindrome Automaton(回文自动机)学习小记
前言 最近B组有一道我不会的题,赶紧学习。简介 我们知道,Manacher算法可以在O(n)O(n)O(n)的时间内求出以每个位置为中心的最长回文串(虽然我昨天还不知道Manacher算法是怎么做的)。但是如果要统计回文串的个数,Manacher就捉襟见肘了。于是,回文自动机闪亮登场! 回文自动机是解决回文串问题的一类数据结构。 这个数据结构比较新,是由来自战斗民族...原创 2018-02-03 11:22:19 · 4804 阅读 · 1 评论 -
平衡树中的神兵利器——非旋Treap(树堆)学习小记
前言 之前A组有一道题目,要你维护一个字符串的插一个字符、删一段字符、复制并粘贴一段字符、翻转一段字符、查询一个字符。我当然想到了splay。但是看了眼数据范围:字符串的总长度不超过231−1231−12^{31}-1,我就知道splay没戏,同时也很惊异这题连splay都切不了,那还能做吗? 于是我就打了暴力。 于是那题我至今未切。 大佬们估计都一眼看出是可持久化Trea...原创 2018-02-04 22:32:17 · 433 阅读 · 0 评论 -
左偏树&二项堆&斐波那契堆
左偏树定义左偏树(leftist tree 或 leftist heap),又被成为左倾堆、左偏堆,最左堆等。左倾树是一棵二叉树,它的节点除了和二叉树的节点一样具有左右子树指针外,还有两个属性:键值和零距离。(01) 键值的作用是来比较节点的大小,从而对节点进行排序。(02) 零距离(英文名NPL,即Null Path Length)则是从一个节点到一个"最近的不满节点"的路径长度。不满节点...原创 2019-04-05 16:06:50 · 924 阅读 · 1 评论