学习小记
文章平均质量分 62
alan_cty
蒟蒻一只
别打脸(⊙o⊙)哦
展开
-
上下界网络流学习小记
网络流是信息学竞赛中几乎必考的一个模型。而上下界网络流也是网络流问题中的一个大类,出题很灵活。原创 2016-02-25 19:03:04 · 1022 阅读 · 0 评论 -
常系数齐次线性递推
前言上了高二学了数列,知道了如何给出递推求通项,也从数竞同学那里听来了高阶常系数齐次线性递推的通项求法。那么OI上如何应用呢?百度了一下发现自己在这一块的技能点为0,就决定学一学QwQ线性代数渣没办法特征多项式若有常数λ\lambdaλ,向量v→\overrightarrow vv,对于n阶矩阵A满足λv→=Av→\lambda\overrightarrow v=A\overright...原创 2018-10-15 22:22:39 · 2755 阅读 · 0 评论 -
拉格朗日反演
偶然间看到zjt的古明地恋模拟赛,发现自己只会做第一题QwQ 点开题解发现这个D好像要用什么叫拉格朗日反演的东西就去学了一波 然而连抽象代数是什么都不知道的我当然没看懂只能背式子==! 于是这里只是给出一些式子,证明什么的太毒瘤了看ZJT的博客 或者鏼爷在WC2015上的营员交流1”若两个多项式f(x),g(x),满足都没有常数项且一次项系数互为逆元,且f(g(x))=x,那么称f(x...原创 2018-08-21 19:46:39 · 3106 阅读 · 1 评论 -
五边形数与拆分数
前言拆分数P(n),就是将n拆分成正整数的和的方案数。 朴素的做法应该是可以做到时空O(nn√)O(n\sqrt n)一次询问的,但多组询问便毫无办法。 但我们可以通过生成函数和正五边形数的方法来做到O(nn√)O(n\sqrt n)预处理O(1)询问 其实可以看wiki欧拉函数与五边形数定理注意这并不是数论中的欧拉函数 定义ϕ(x)=∏∞i=1(1−xi)\phi(x)=\prod_{i=原创 2018-05-03 21:26:30 · 1471 阅读 · 0 评论 -
虚树学习小记
前言有一类问题,形如:给出一棵n个点的树,每次给出k个关键点,求这些关键点之间的一些信息。 保证∑k和n同阶 而对于一次询问是很好用树形Dp之类的方法解决的。 观察到只有关键点有用,我们可以只保留关键点和两两之间的lca,这就是虚树。 显然虚树的大小是O(k)的,只有dfs序相邻的两个点的lca有用 建出虚树后这类问题我们只需要在虚树上Dp就可以了。 但虚树要怎么建立?单调栈我们先把所有原创 2018-04-25 21:13:22 · 263 阅读 · 0 评论 -
回文树复习小记
之前在某一场富榄出的模拟赛中见到了回文树于是去学习了一发,然后今天再次见到就忘光光了_ (:з」∠) _ 于是我觉得很有必要写一发复习小记=w= 首先,回文树和sam类似,是用O(n)的空间存下了所有本质不同的回文串。 但是回文树比sam好实现,原因是一个字符串本质不同的回文串数量就是O(n)的。 因为每次添加一个字符时,假设新增的最长的回文串的长度为D,可以证明只有这个最长的回文串可能是新原创 2017-12-09 20:47:49 · 321 阅读 · 0 评论 -
浅谈决策单调性在1D1D动态规划中的运用
1D1D动态规划是指状态数为O(n),每个状态的决策数为O(n),直接求解的复杂度为O(n^2)的动态规划方程。但这种方程往往都能够通过一些合理的组织和决策优化到O(n log n)甚至O(n)的。 由于博主比较弱所以只分析下面几种情况(其他的等会了有时间再补)1.斜率优化很奇怪我最开始接触的竟然是这个效率最高的但适用性最窄的优化 具体来讲,每一个决策可以看做一个二维平面上的点,某两个决策的优劣原创 2017-10-27 08:30:13 · 1781 阅读 · 0 评论 -
类欧几里得算法推导
由于博主很菜,在这里只想简单推导两个最经典的问题模型用类欧的做法。 这两个模型的扩展等哪天有梦想了再补吧。。。Part 1求∑i=0n⌊ai+bc⌋\sum_{i=0}^{n}\lfloor{ai+b\over c}\rfloor 设答案为函数f(a,b,c,n) 当a>=c或b>=c的时候,我们可以提出一个⌊ac⌋\lfloor{a\over c}\rfloor或⌊bc⌋\lfloor{b\原创 2017-08-08 22:50:15 · 446 阅读 · 0 评论 -
欧拉定理ext证明[转自知乎]
由于今天做题时遇到了这个神奇的又找不到什么资料的定理就学了一发=w= 原文传送门 求证:ax≡axmodφ(m)+φ(m)(modm)a^x\equiv a^{x\mod \varphi(m)+\varphi(m)}\pmod m 前提条件是x≥φ(m)x\ge \varphi(m)首先你需要会证普通的欧拉定理,这个网上资料很多自己查就好了 接下来证明若x≡y(modm1)x\equiv y转载 2017-07-09 22:12:16 · 845 阅读 · 4 评论 -
单纯形求解线性规划
线性规划是什么我想这个问题高中课本也给出了比较详细的定义了 用向量来解释的话就是构造一个n维向量x,满足 maxcTx\max c^Tx Ax≤BAx\le B x≥0x\ge 0 其中c是给出的n维向量,A是n*m的矩阵,B是m维向量 这是线性规划的标准型我们可以知道,任意一个线性规划都是可以转化为标准型的 对于目标值取min的我们可以取反之后取max 对于Aix≥BiA_ix\g原创 2017-05-12 12:47:14 · 986 阅读 · 0 评论 -
FFT学习小记
前言其实很早就看懂了FFT是如何工作的 只是懒癌晚期加上各科老师逼着我好好中考所以没时间来写 现在来补一发 由于博主很弱,您无法避免看到:偷懒,智障,意识流 请勿恶意拍打喂食=w=前置技能首先你需要知道什么是复数并且会表示复数 简单来说就是我们约定i=−1−−−√i=\sqrt{-1} 那么所有的复数都可以表示成z=x+iyz=x+iy的形式 于是我们在复平面上就用向量(x,y)来表示原创 2017-03-03 20:02:14 · 478 阅读 · 0 评论 -
gdb调试学习小记
由于最近搞了一发sublime text的使用,然后发现这东西只能当编译器,不能用来调试~~ 于是便去学了一发gdb的调试方法。。。 然后发现报错了? 仔细一看,原来是pascal的gdb把c++的gdb覆盖掉了233 怎么那么相似呢~~配置机房渣渣win7 32bit MinGw下载gdb好吧因为我的C++是5.8.3的,gdb是64位的,机房电脑配置不够得重新下。。。 如果你没有这一原创 2016-10-10 21:03:54 · 582 阅读 · 1 评论 -
Link Cut Tree学习小记
前言其实我早就知道Link Cut Tree 是什么东东,可是懒癌晚期不想仔细学。 简单点说就是动态的树链剖分,因为我们链剖用的是线段树,死在那里。 既然要用动态,那么肯定要用平衡树来维护啦,我们选择splay。 如果不会splay的还是别看了,splay学习小记一些东西其实这个东西杨哲的集训队作业也是有的,大家可以先去看一看。 我们把之前访问到的点称作偏爱点,从根到偏爱点的路径叫做偏爱路径原创 2016-09-03 16:09:59 · 847 阅读 · 0 评论 -
SAM学习小记
手玩了一个晚上,终于发现自己的sam爆栈了。。。 @samjia2000 不是玩你233前言SAM——suffix aotu-machine 它(Ta?)是有限状态自动机(FSA)的一种(废话)。 它可以实现以O(n)的状态存下一个字符串的所有字串。 因为它把那些本质相同的字串都映射到一个状态上了。构造我们记RightsRight_s表示子串s在原串中出现的结束位置的集合。 很显然Righ原创 2016-08-17 22:40:05 · 770 阅读 · 0 评论 -
莫队算法学习小记
先前还以为莫队算法是一个高级的东西。 可是仔细学习了一下,才发现这东西应该叫做——一个优雅的暴力对于一个询问区间[l,r],如果我们可以O(1)的得到区间[l,r-1],[l,r+1],[l-1,r],[l+1,r]的答案,那么从这个询问转移到另一个询问的时间复杂度为O(|l-l’|+|r-r’|)。 那我们可以确定一个解决询问的顺序,从而使复杂度达到O(n^1.5) 我们把每个询问看做二位平原创 2016-04-28 20:49:52 · 1675 阅读 · 0 评论 -
各种有用的东西、黑科技、技巧
转自WerKeyTom_FTD的blog 1、整体二分及cdq分治实现时,每个区间不需要单独开队列。可以把操作弄到一个数组了,然后多两个参u、v表示这个区间的操作在u~v,做完后对每个操作打标记表示是否往右区间传即可。 2、两个long long相乘取模怎么办? 第一种是快速乘,类似快速幂,复杂度多了个log 第二种是找一个比较小的数,然后搞一波,详见代码ll qsc(ll x,ll y){转载 2016-03-16 20:25:06 · 2061 阅读 · 0 评论 -
splay学习小记
高大上的splay。 让我splay一下先。好了,讲正事。(所有图片来自wiki,感谢大力支持) splay,顾名思义,就是伸展树。它是二叉排序树的一种。然后,为了完成一些操作,它会通过不断旋转来在不破坏结构的情况下调整自身,从而减小深度,达到log n的均摊复杂度。可以说,splay的核心就是这O2(氧气)的旋转。如何旋转?首先,可以很容易的想到,左旋和右旋的打法。 但是,如果原来的树是原创 2016-04-22 18:58:47 · 886 阅读 · 0 评论 -
树链剖分学习小记
树链剖分在处理一类在树上修改,查询的问题时,我们往往需要把这棵树剖分成一个序列。然后利用数据结构在这个序列上把你所需要的东西一段一段地查出来。但如果剖分方法不得当的话,每一次查询就可能只查询了一个点,时间复杂度还不如暴搜!因此我们需要一个优秀的算法来帮助我们进行剖分,这就是树链剖分(启发式剖分,轻重链剖分)。我们把每一个点最大的儿子叫做重儿子,其余的叫做轻儿子。连接重儿子的叫做重边,其余的叫做轻边。原创 2016-03-09 19:59:19 · 956 阅读 · 0 评论 -
那啥的lis
Description求长度为n的排列的lis的期望Solution 1n<=15考虑用二分求lis的时候,我们会维护一个Dp数组,其中Dp[i]表示长度为i的lis的结尾最小值显然Dp是单调上升的,所以我们直接压哪些数在Dp数组中出现过就可以做到转移了当然为了转移我们还需要知道哪些数已经被选但是没有出现在Dp数组中O(n23n)O(n^23^n)O(n23n)Solutio...原创 2018-10-31 22:33:34 · 278 阅读 · 0 评论