路径压缩优化并查集的时间复杂度
摘要:路径压缩优化并查集大家一定很熟练了,那么它的复杂度是多少呢?O(mα(n))O(m\alpha(n))O(mα(n))?的确,很多人都是这么说的,但是事实上它的复杂度是O(mlog1+m/nn)O(m\log_{1+m/n}n)O(mlog1+m/nn)...
阅读全文
支配树与Lengauer-Tarjan算法
摘要:伪目录给出支配树的定义给出一些性质介绍快速构造支配树的Lengauer-Tarjan算法及具体实现支配树是啥一个有源点的有向图,其支配树是满足下面条件的一个有向图:对于支配树上一点,若断开此点,则源点必定不能到达它的任何儿子,并且能到达其他任意一个点。不显然...
阅读全文
莫比乌斯反演+杜教筛 题表
摘要:“入门”难度BZOJ 3994 [SDOI2015]约数个数和BZOJ 4805 欧拉函数求和BZOJ 2440 [中山市选2011]完全平方数Luogu P3935 CalculatingLuogu P4450 双亲数BZOJ 4916 神犇和蒟蒻需要一点...
阅读全文
一个多项式求逆的卡常技巧
摘要:markdown源码https://paste.ubuntu.com/p/wyNvxb4PPQ/假设在 mod xn\bmod x^nmodxn下,多项式AAA的逆元是FFF,在&VeryThinSpa...
阅读全文
关于一个平面内矩形个数的问题
摘要:问题一个平面内的nnn个点,以这nnn个点为顶点,最多能构成多少个矩形?点的排列是自己决定的。先说结论:构成矩形的个数,上界是O(n2n)O(n^2\sqrt{n})O(n2n),下界是Ω(n2)\Omega(n^2)Ω(n2)。上界记Ca,bC_{a,b...
阅读全文
浅谈算法——LCT
摘要:前置技能splay: 必须树链剖分: 可选,知道树链剖分会容易理解一些。以下大部分图片来自https://blog.csdn.net/saramanda/article/details/55253627Link Cut Tree(LCT)LCT,又叫林克-卡...
阅读全文
浅谈算法——多项式乘法相关
摘要:从多项式乘法到FFT这一段大部分是复制以前我写的这篇博客:https://blog.csdn.net/wang3312362136/article/details/79510933这篇博客有详细的代码,但是阅读体验布星,因此我把它的大部分证明过程复制下来。如...
阅读全文
浅谈算法——莫比乌斯函数,莫比乌斯反演和杜教筛
摘要:莫比乌斯函数和莫比乌斯反演前置技能基础数论内容。莫比乌斯函数μ(n)" role="presentation">μ(n)μ(n)就是莫比乌斯函数,如果有: n=∏i=1mpxiai(ai>0)" role="presenta...
阅读全文
算法详解——左偏树
摘要:可并堆是啥给你两个优先队列,要你合并这两个优先队列,而且还要保证合并后符合优先队列的性质,时间复杂度要限制在log(s1+s2)\log (s_1+s_2)log(s1+s2)之内。怎么做?现在普通的堆已经满足不了要求了。这个时候,就要用一种神奇的数据...
阅读全文
浅析算法——斯坦纳树
摘要:斯坦纳树用途给一个图,求最小生成树?这个很简单,prim/kruskal搞一搞。如果只要求联通某几个点,而不强制要求其他点的联通?这个prim/kruskal就不好做了。那怎么求这个呢?当然是要用到斯坦纳树啊。计算方法假设fi,sta" role="pres...
阅读全文
算法详解——后缀自动机
摘要:DFADFA,即确定性有限状态自动机,由一个五元组M=(Σ,Q,qs,F,tr)M=(\Sigma,Q,q_s,F,tr)M=(Σ,Q,qs,F,tr)组成,其中:Σ\SigmaΣ为一个有限字符集,其中每个字符ccc称为一个输入符号;QQQ为一个有限状态集...
阅读全文
浅谈算法——博弈论
摘要:转载说明https://www.cnblogs.com/Wolfycz/p/8430991.htmlhttps://www.luogu.org/blog/Wolfycz/qian-tan-suan-fa-bo-yi-lun-zong-ling-kai-shi...
阅读全文
算法模板——高斯消元
摘要:基础首先,n元1次方程组 ⎧⎩⎨⎪⎪⎪⎪⎪⎪a1,1x1+a1,2x2+⋯+a1,nxn=b1a2,1x1+a2,2x2+⋯+a2,nxn=b2⋯an,1x1+an,2x2+⋯+an,nxn=bn 可以写成 ⎡⎣⎢⎢⎢⎢a1,1a2,1⋯an,1a1,2a2...
阅读全文
算法模板——AC自动机
摘要:AC自动机一种能让你AC的算法? 一种字符串匹配算法! 用来解决多字符串匹配问题的算法啦。 首先想一想KMP算法……(不知道KMP是什么?到时候我会写一篇专门的博客,敬请期待) 例如字符串aabaaaba与aba的匹配: 在第二个位置失配,这个时候模式串可...
阅读全文
算法模板——manacher算法
摘要:manacher算法是什么? 这是一种求最长回文字串的算法。 首先要采用一种方法,向原串中每隔一个字符加入一个没有在原串中出现过的字符,这样能够避免分类讨论奇数长度的回文串和偶数长度的回文串。同时再在头部和尾部加入两个不相同的字符,防止寻找时溢出字符串范围 ...
阅读全文
算法模板——后缀数组
摘要:后缀数组是什么?可以吃吗? 不可以吃,它是给一个字符串的所有后缀进行排序的算法。 如:一个字符串aabaaaab,它的后缀排好序后起始位置分别是:4 5 6 1 7 2 8 3 显然如果暴力去排序时间复杂度为O(n2),可以用倍增算法或DC3算法来解决,本文...
阅读全文
算法模板——倍增求LCA
摘要:LCA是什么? 最近公共祖先,就是树上的两个点它们深度最大(离根节点最远)的公共祖先。算法 1. 朴素算法。时间复杂度O(n×q)。并没有实际意义。 2. 倍增算法。时间复杂度O((n+q)logn)。倍增算法 它的特点是:每次向祖先跳的距离,不是1,而是2...
阅读全文
算法模板——Tarjan算法
摘要:Tarjan算法是一种用来求强连通分量的算法。 什么是强连通分量? 一个有向图的极大强连通子图叫做强连通分量。就是说,一个图的一个子图是强连通图,再加进一个点和与之相邻的边,那么这个图就不是强连通图,这样这个子图是原图的强连通分量。 确定一些名词 首先每张图...
阅读全文
算法模板——Catalan数
摘要:目的 用于解决一些有(qi)趣(guai)的问题,如:括号匹配问题,凸多边形划分问题,二叉树种类问题等。递推方程为hn=∑ni=1hi−1×hn−i。 为什么凸多边形划分的方案数是Catalan数? 设有一个凸x边形,选择一条边,作一个以这条边为一边的三角形...
阅读全文
算法模板——数位dp
摘要:数位dp 顾名思义,数位dp就是对每个数位进行dp。一般来说,数位dp的适用范围是求一个区间[a,b]的值,其中a和b会很大,而且值具有可加性。那么对于每个值可以分成一些段,如:2333可以分成求0-999,1000-1999,2000-2299,2300-...
阅读全文