自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 operator_的模板综合(动态更新)

【代码】operator_的模板综合(动态更新)

2023-04-24 18:12:13 794

原创 也许是全网最清晰易懂的KMP讲稿?——operator_

我们发现,在暴力匹配时,有很多比较是多余的,比如说,当我们进行了第一次匹配后,第二次匹配其实完全是多余的,因为第二次匹配成功的。其次,跳过去中间不会漏下任何情况,看我们最开始的例子,第二次匹配为什么是不必要的?再比如,当我们进行了第一次匹配后,第四次匹配的前两次比较其实也是多余的,因为我们通过第一次匹配我们得知了。你可能有疑问,我们在跳失配指针时看起来是有一个内循环的,复杂度正确吗?也是顺序的,指的是包含最后一个元素的连续一段,不同,如果这两个串相同,就违反了我们。),好像就可以完成上面的两个优化了。

2023-08-24 14:12:37 47

原创 整数分块——operator_

这是一种很简单但好用且优雅的n\sqrt nn​分块。考虑求∑i1n⌊ni⌋∑i1n​⌊in​⌋,很容易发现⌊ni⌋⌊in​⌋的值的种类不多,考虑按值域来求解。事实上,⌊ni⌋⌊in​⌋的值最多只有2n2\sqrt n2n​种(并不严谨,但反正是n\sqrt nn​级别的),证明如下:对于ini>\sqrt nin​⌊ni⌋≤nin⌊in​⌋≤in​n​。

2023-08-23 15:20:28 45

原创 上下界网络流——operator_

建完模,考虑寻找可行流,由建模的原理,只要源点与汇点所有有关的边全部满流(易证源点满流时汇点也满流),就可以保证原网络流量平衡,即寻得一条可行流,那么只要跑一遍最大流即可。,那么新源点与新汇点的所有边已经满了,同时也已经让新网络的残量网络流量平衡(感性理解,可以视作都减去一个不同的差值使其平衡),所以我们以原网络的源点与汇点跑一遍最大流。的流量大于流出的,就从虚拟源点连一条流量为差值的边,反之就连向汇点。好,现在的问题就转化为了怎么保证差值网络流量平衡,可以发现,在一个正常的网络流中,唯一流量不平衡的是。

2023-08-11 15:19:43 52

原创 treap——operator_

小,那么为了维护堆性质我们要把右儿子变成根节点,但这样会破坏二叉搜索树性质,所以我们要把。性质嘛,就是二叉搜索树的所有性质它都满足,它只不过是让二叉树的形态平衡一点而已。在二叉搜索树插入与删除的过程中,经常会改变树的形态,我们就需要一种操作来维护。以左旋为例,我们在某一操作结束后发现根节点的右儿子。是一种思路简单,码量较小的(弱)平衡树。,具体代码与二叉搜索树差不多,可以去。取随机数,那么它的形态近乎平衡。中,这种操作就是左旋和右旋。的性质 ,易知这是一棵。的右儿子上,如下图。

2023-08-07 15:36:09 28

原创 复数——operator_

咳咳,数学课上学的复数,先写着,之后再补FFTFFTFFT之类的\dots我们用CC表示复数集,任意复数可以表示为abia+biabi的形式,其中a∈Ra∈R为实部,b∈Rb∈R为虚部,iii为虚数单位,满足i2−1i^2=-1i2−1。对于zabiz=a+bizabi,其共轭复数为z‾a−biza−bi。满足xn−10x^n-1=0xn−10的根都被称为单位根。

2023-07-26 13:46:52 51

原创 7.17 模拟赛T1(math)笔记

xy+1|x2+y2。模拟赛的一道T1T1T1,被完虐,记录一下。这思路有点离谱,虽然没用到过任何高级算法、数论知识,但是真的难。其实规律能接受,但证明过程真的复杂。这题据说可以打表找规律,但我没找到,我太蒻了。

2023-07-17 19:52:50 36

原创 并查集——operator_

理解一下题意,发现一个人的所有敌人都是朋友,所以想到给他们也开一个并查集,进而想到先给每个人都分配一个不存在的敌人,设其为。它的思路很简单:把每一组都看作以某点为首的一棵树,记录每个点的父亲节点,那么就可以不断向上找到根节点,也就代表了这个点的组别。顾名思义,就是每个并查集再维护个什么东西,比较常见的有维护到根的距离,合并时注意点顺序就好了。参考平衡树,尽量让集合的深度低一点,所以可以把浅的数放到深的树下,按子树大小同理。虽然也很好用,但要多开几个数组,代码要改的地方比较多,平常用路径压缩就足够了。

2023-06-24 16:31:05 45

原创 倍增思想——operator_

顾名思义,就是每次翻倍增加,属于一种很实用的思想。

2023-06-24 13:31:55 88

原创 堆——operator_

懒得画图,想象一下一个沙漏状的结构,上部是大根堆,下部是小根堆,它们有一个共同的堆顶(实际在写代码时只存在于某一个堆中,或者开一个变量存储),这个堆顶就是我们要求的中位数。删掉之后堆顶就空了,所以要让一个元素来顶替它(具体值是多少没关系,一遍调整就好了),那么为了保持完全二叉树的性质,我们肯定要让最后一个元素顶上去。堆顶一定是最小的,所以可以直接输出,然后把它删除。上面讲到,我们是可以把堆看作数组的,那么对于一个数组,我们也可以把它看作堆。当然,现在的“堆”并不满足堆的性质,所以我们要调整,调整是。

2023-06-16 16:04:38 39

原创 斜率优化——operator_

形如dpiMinMaxai∗bjcidjdpiMinMaxai∗bjcidj]),又满足一些条件的方程都可以考虑斜优,先推式子,转化为计算几何,之后可以考虑单调性、二分、三分等方法快速求解。

2023-05-21 12:07:23 26

原创 5.20模拟赛 赛后回顾

组咒文的其中一个,只要有一段选的不一样就认为方案整体不同,求方案数(对。,现在可以选一个值拿出,再重新插入到序列的任意位置,求最大可爱值。然后和数的大小关系是有关的也是显然的,所以先排序(从小到大)。定义一个序列的可爱值(强烈谴责出题人,怎么又是可爱值)为。段的方案数,转移就暴力枚举每个字符串,不会超时的。听了讲解,这种题就是要考虑每一个数的贡献,易得。求一个集合的所有真子集的可爱度之和(对。,最后再把逆元一块乘上,可能会方便点。定义一个集合的可爱度为若干次操作使。还要求逆元,可以选择都先乘一个。

2023-05-21 12:04:00 25

原创 线段树——operator_

线段树是一种支持各种区间操作、区间询问的数据结构,复杂度同树状数组,时空常数略大,但应用范围极广。树状数组基于二进制,线段树则是基于分治。我们怎么分治?1.1.1.分成左右两部分递归2.2.2.考虑合并3.3.3.考虑边界情况那线段树的写法已经呼之欲出了。

2023-05-21 12:02:16 25

原创 字典树——operator_

想象一下字典,你查字典肯定不是从头翻到尾的吧,字典树就借鉴了这个思想。每个节点下连接了几个儿子,而节点本身代表一个字符(根除外),那么从一个节点到根节点的路径,就是代表的一个字符串。它有一些显然的性质,比如同前缀的字符串会处在一个子树内,可以利用这些性质干一些事(比如本题就可以dfsdfsdfs求子树和,做到O1O(1)O1询问)。它可以做到O∣s∣O(|s|)O∣s∣的插入与查找。

2023-05-16 20:57:40 28

原创 5.13模拟赛 赛后回顾

的定义是最后要被消耗掉的炮灰的集合,一个苹果显然只能吃一次,所以若两个集合都有同一个苹果,就是不合法的。不大,所以直接枚举,两个苹果能都存在的判定就是:都要合法,同时最后。,其实就是存在至少一种情况,让这两个苹果都能在最后存在。),那么都要留给后面,现在就没苹果吃了,直接。),那么这个苹果肯定得留,就只能吃另一个。由于贪心,肯定优先选小的,所以要排序。代码由于细节问题没调出来,就不放了。喜欢的、都喜欢的、都不喜欢的。离散化每个点,用线段树维护。,同时打上标记,代表不合法。),那么显然就不用管。

2023-05-14 17:25:54 29

原创 Huffman树——operator_

发现很多简单,但比较偏的算法我都不懂,所以现在开始按随机跳的题来浅浅了解一下这些东西。也可以说是一个数据结构。它可以用一句话来描述:带权路径长度最短的二(多)叉树。一棵树的带权路径长度是每个节点的权值*这个点到根的距离之和。

2023-05-12 19:09:05 23

原创 5.3模拟赛 赛后回顾

当然这样会有反例,比如这个点先蹦出了矩阵,然后又蹦回来了,当然大部分情况可以通过改变顺序变合法,但也有些点没法调整回来,所以最稳妥的方法应该是特判每一个在边界上的点(一蹦可能蹦出矩阵的),因为。个点的树,点有权,现在要选一些点使点权和最大,要求任意两个点的距离要大于。转移会有点烦,具体来说,就是分。,定义一个合法的字符串必须保证先出现至少连续。被触发了,问最后会有多少点被触发。注意到每个会被触发的点一定能写成。当然了,直接选根,也就是。的范围很小,所以不会超时。的矩阵的样子,每个点。

2023-05-03 18:38:16 31

原创 4.29模拟赛 赛后回顾

这里发现有一个结论,最高的山一定不会被合法的弧所跨过,证明显然,所以考虑以最高的山为首破环成链,这样问题就转化为了经典的另一道原题。座山峰包围,形成一个圆圈。每座山的山顶都有一个瞭望塔,瞭望塔有高度的区别。人们发现他看似一个连续的不下降函数,但是函数的任意切线都是水平的。的最大值,以及子树权值和,状态转移时再分别维护最大值和次大值就可以。以你现在的数学水平,还不能很好地理解这个函数,所以你的任务并不难。然后方法就很多了,可以维护一个单调栈再二分,或者维护。的子树外要全选,子树内的话,就是一个简单的树形。

2023-05-03 18:36:46 44

原创 微积分基础——operator_

可以简单理解成函数在ab[a,b]ab区间中与xxx轴围成的面积大小(有正负)。

2023-05-03 18:36:14 402

原创 hash——operator_

核心:设计一个算法,使得要哈希的东西在一定程度上一一对应为一个数值,一般是通过取模实现,从而做到O1O(1)O1比较,或者是支持减法,从而做到O1O(1)O1求任意一个东西的哈希值。一般是用于快速比较。哈希的取模,可以使用自然溢出(即超过范围自动取模),或者手动取模。你要知道,因为哈希是基于取模的,所以对着代码还是可以卡的。自然溢出比较方便,而且速度比一般取模略快,但可能被卡,手动取模相对较烦,但不易被卡(因为模数是自定的),不过你也可以自定义一种数据类型来自动取模。

2023-04-25 19:17:02 95

原创 树状数组——operator_

这个东西比较特殊,用图感觉反而会乱(主要是根节点不是111),我就尽量用纯数学的讲吧。定义tiaiai−1⋯ai−lowbiti1tiaiai−1⋯ai−lowbiti1,反正就是前lowbitilowbit(i)lowbiti个数的和。其中lowbitilowbit(i)lowbiti指的是iii在二进制表示下最低位的111所代表的数量级,比如101010。

2023-04-22 19:29:47 40

原创 最大流——operator_

寻找增广路,求该增广路中的残量最小值,增广路中的每条边都要减去这个最小值,最后答案再加上这个值。不断重复,直到没有增广路了。:从源点出发,通过一些有向边容量的约束,最终能到达汇点的最大流量被称作最大流。寻找增广路,求该增广路中的残量最小值,增广路中的每条边都要减去这个最小值,而。求增广路,但考虑的不是每一条增广路的贡献,而是每个点的贡献。:从源点到汇点的一条路径,这条路径的所有边权都大于0。,最后答案再加上这个值。:网络中的一个特殊的点,只出不进,被称作源点。:网络中的一个特殊的点,只进不出,被称作汇点。

2023-04-09 16:58:26 79

原创 计算几何基础——operator_

东西好多啊⋯还好都不算难。

2023-04-02 11:09:48 29

原创 数论基础——operator_

有$a%b=a- \lfloor{{a}\over{b}}\rfloor*b $可以推广得到任意方程的通解。对应的,乘法逆元的定义:若。同时逆元也可能不止一个。有整数解的的充要条件是。再来一次裴蜀定理,就有。最后考虑一下边界即可。所以可得到原方程通解。

2023-04-02 09:47:45 156

原创 最小生成树——operator_

222种算法都是贪心的,可以根据是稀疏图还是稠密图选择合适的算法,在我做的题中好像kruskalkruskalkruskal应用广泛一点。

2023-03-27 20:08:52 27

原创 最短路——operator_

多源最短路无脑floydfloydfloyd,随机数据、有负权边或者需要多次最短路可以考虑SPFASPFASPFA,另外情况用dijkstradijkstradijkstra比赛时SPFASPFASPFA请酌情使用。

2023-03-27 18:51:37 28

原创 高斯消元法——operator_

呃,二元一次方程组解过吧,学校教的是加减消元法和代入消元法,代入消元法是要对原方程移项的,有点麻烦,而加减消元法虽然有很多巧妙的解法,但电脑不知道,所以用最一般的方法:加减消元法正推,代入消元法逆向回带。之所以要回带,是因为高斯消元后的方程组呈三角形,而利用高斯-约旦消元法,我们可以直接得到。高斯消元法的精度误差很大,所以尝试降低误差。你可以尝试一下,会发现除法的误差最大,同时除数越大误差越小。个版本还有一个优化版本,这就是高斯-约旦消元法,它有两个优化。处不再是找到一个就停止,而是找系数最大的方程。

2023-03-26 14:05:42 110 1

原创 2-sat——operator_

2−sat2-sat2−sat问题指的就是有若干个集合,每个集合内部有222个点,这两个点只能且必须取一个(其实就是一个boolboolbool变量的222种取值),在集合外,还有若干个关系,形如::: x1x_1x1​ 与 y2y_2y2​ 中至少取一个,求是否有满足所有关系的可行解(可能还会要求构造)。形式化一点,就是求构造boolboolbool数列{x}\{x\}{x}使得(x1∨x2)∧(x1∨¬x4)∧(¬x3∨x4)∧(x2∨x5)∧⋯==true(x_1 \vee x_2)\land(x_

2023-03-26 13:28:36 34

原创 类欧几里得——operator_

类欧几里得算法证明

2023-03-26 12:34:58 24

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除