变态的算法
杨子曰
这个作者很懒,什么都没留下…
展开
-
二维前缀和(矩形割补法)——杨子曰算法
二维前缀和(矩形割补法)——杨子曰算法今天曰一个很实用的技巧,二维前缀和 来,先问一个问题,如果我给出一个矩阵,让你求出任意一个子矩阵的和,你会怎么搞? 哦,简单简单,O(n^2)咔咔地暴力一下,欧了 要是真这么简单,我会问你吗?我们追求的是速度,做到O(n^2)读入后,O(1)搞定。好的,你先要知道一个东西叫做前缀和,就是让你算出一个序列中子序列的和, 方法就是用f[i]...原创 2018-03-30 10:04:08 · 604 阅读 · 0 评论 -
分块算法——杨子曰算法
分块算法——杨子曰算法给出一个长为 n 的数列,以及 m 个操作,操作涉及区间加法,单点查值。今天我们来曰一个炒鸡暴力的算法——分块这是分块最最简单的应用:它的想法简直暴力的不信,当你懒得打一些代码老长老长的数据结构时,你可以采用这种粗暴的方法:首先,把数列分成n\sqrt{n}n段,那么每段的长度就是n\sqrt{n}n然后就开始无脑操作了,比方说我们要对这一区间更新:对...原创 2019-03-15 13:54:14 · 266 阅读 · 0 评论 -
KMP——杨子曰算法
KMP——杨子曰算法半年过后我又回来了先给一道题:如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。(字符串长度<=1000000)大佬说:“哟,这道题的暴力好优啊!!”就像下面这样指针i,j从头开始哦,一样,i++,j++嗯,又一样,i++,j++继续什么,不一样了,没事j从头来,i从第二个出发一开始就不一样了,那再向前一格…...原创 2019-03-11 13:59:00 · 520 阅读 · 0 评论 -
Manacher(马拉车)算法——杨子曰算法
Manacher(马拉车)算法——杨子曰算法马拉车?中华汉字真是博大精深……今天我们曰的算法只能干一件事情——求一个字符串的最长回文子串(神马是回文子串就不用我说了吧)首先我们来想一想大暴力怎么做“我知道!枚举子串的头,枚举子串的尾,再暴力判断这个串是不是回文串,复杂度O(n3)”杨子曰:“呃……太暴力了,能不能稍稍优化一下”我们枚举回文字串的中心,然后向两边延伸,比较是否对称,一...原创 2019-03-20 12:41:21 · 199 阅读 · 0 评论 -
AC自动机——杨子曰算法
AC自动机——杨子曰算法”哦,什么,这个算法可以自动AC题目?“”呵呵,你想多了……“在阅读此文章前,请先确保掌握字典树和KMP算法,你也可以阅读:字典树(trie)——杨子曰算法KMP——杨子曰算法字典树和KMP都是用来处理字符串的问题的,我们用KMP可以解决类似yzy在yzyzyzyblockyzyzy出现了几次的问题,但如果有一天有一个人问你:yz,yzy,bl,yzyb在y...原创 2019-03-21 14:57:13 · 247 阅读 · 0 评论 -
高斯消元——杨子曰算法
高斯消元——杨子曰算法高斯消元,可以干一件事情——求解n元一次方程组黑喂狗:我们以这样一个方程为例来讲解一下:{2x+3y+z=143x+y+4z=30x+4y+2z=17 \left\{\begin{aligned}2x+3y+z=14\\3x+y+4z=30\\x+4y+2z=17\end{aligned}\right.⎩⎪⎨⎪⎧2x+3y+z=143x+y+4z=3...原创 2019-04-21 16:32:11 · 507 阅读 · 0 评论 -
Baby Steps Giant Steps(BSGS)及其扩展——杨子曰算法
Baby Steps Giant Steps(BSGS)——杨子曰算法又名巴士公司,北上广深,拔山盖世……感叹:中华汉字真是博大精深啊!他可以干嘛捏?解方程:ax≡b (mod p)a^x\equiv b\ (mod\ p)ax≡b (mod p)的最下正整数解,不过a和p是互质滴...原创 2019-04-22 13:33:59 · 351 阅读 · 0 评论 -
欧拉筛和筛法求欧拉函数——杨子曰数学
我们都知道,再这个世界上,有一个筛质数算法叫做埃筛,它的代码长这样:void get_primte(int n){ memset(flag,1,sizeof(flag));//flag开成bool就可以用memset赋值成1了 flag[1]=0; for (int i=2;i<=n;i++){ if (!flag[i]) continue; pr[++cnt]=i; f...原创 2019-04-19 12:14:36 · 752 阅读 · 0 评论 -
最小表示法——杨子曰算法
最小表示法——杨子曰算法先给一道题: 就是说给你一个可以循环的字符串,问以那个字符开头,它的字典序最小今天我们曰最小表示法,他可以求出一个环之类的东西的最小表示——那有什么卵用呢?这样你就可以判断两个环是不是同一个了[欢呼](还真没什么卵用)上面那道题有人说O(n^2),就搞定了(呵呵) 我们用O(n)干掉它好了,接下来我们就来曰最小表示怎么求: 这种算法使用两个指针i,j实...原创 2018-08-01 12:52:02 · 319 阅读 · 0 评论 -
树链剖分求LCA——杨子曰算法
树链剖分法求LCA——杨子曰算法显然这是树链剖分和LCA的结合体 然我假装你已经回来这两个东西,或者看了: 树链剖分——杨子曰算法 谈谈最近公共祖先(LCA)——杨子曰算法 这两个东西,如果你对上面那两个玩意有影响的话,黑喂狗:树链剖分法求LCA思路非常的简单,也非常好理解: 1.按重儿子剖分这棵树 这时对于同一条链上的两个点直接输出高的那个就行了,那如果两个点不在同一条链...原创 2018-08-09 09:28:42 · 549 阅读 · 0 评论 -
堆排——杨子曰算法
堆排——杨子曰算法没错,它又是一个n log n的算法,有人说:学这么多排序有什么卵用? 杨子曰:装逼堆排是用一个堆来实现的(废话) 我们这里说的堆是小根堆——就是爸爸比儿子要小的堆(听上去好别扭) 堆排的实现要分为两个部分:建堆和拆堆 我们用3,4,6,1,5,2来模拟一下 黑喂狗:1.建堆 我们在建堆是一定要维护爸爸比儿子小,具体怎么实现呢?拿到一个数后不管三七...原创 2018-07-26 12:47:56 · 263 阅读 · 0 评论 -
最大子矩阵——杨子曰算法
最大子矩阵——杨子曰算法来,今天曰个模板——最大子矩阵 简单的说就是给你一个矩阵(n*m,有负数),让你在这个矩阵中取出一个子矩阵,是得子矩阵的和最大。1.O(n^6)巨型大暴力 n^2枚举子矩阵左上角,n^2枚举子矩阵右下角,再n^2求个和,O(n^6)搞定,如果你想到的是这个,杨子只想曰:呵呵2.机O(n^3)智大暴力 依然用n^2枚举子矩阵左上角,n^2枚举子矩阵右下角,但...原创 2018-03-31 20:14:59 · 377 阅读 · 0 评论 -
谈谈最近公共祖先(LCA)——杨子曰算法
谈谈最近公共祖先(LCA倍增)——杨子曰算法今天,杨子来曰(yue)一曰(yue)算法——LCA 是神马呢? 举个例子,我姓杨,你也姓杨,所以我们早在5325年前肯定有一个公共祖先,BUT这个公共祖先的儿子也有可能是我们公共的祖先,对吧?So,肯定在我们的所有公共祖先中,有一个是离我们最近的(也就是说,他的两个儿子分别是我和你的祖先),那么这个祖先就称为,我和你的最近公共祖先,即LCA. ...原创 2018-03-26 21:20:35 · 1002 阅读 · 0 评论 -
割点——杨子曰算法
割点——杨子曰算法瞎BB: ✌,破纪录——最短的博客名!!!!首先,来讲一讲What is 割点?赶紧度娘一下 在一个无向图中,如果有一个顶点集合,删除这个顶点集合以及这个集合中所有顶点相关联的边以后,图的连通分量增多,就称这个点集为割点集合。 如果某个割点集合只含有一个顶点X(也即{X}是一个割点集合),那么X称为一个割点。吼吼吼,胆子小的人已经关掉了博客,神马...原创 2018-05-04 10:09:18 · 490 阅读 · 2 评论 -
二分图匹配之匈牙利算法——杨子曰算法
二分图匹配之匈牙利算法——杨子曰算法话说在一个相亲大会上,有n个男的和m个女的,每个男生都有自己喜欢的1个或几个女的,身为主办方的你要尽可能满足更多男生,问最多能匹配出多少对今天我们来曰二分图,那二分图到底是什么鬼呢? 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i i...原创 2018-07-17 12:10:31 · 361 阅读 · 0 评论 -
树链剖分——杨子曰算法
树链剖分——杨子曰算法先搞一道题,给一个n个结点的树原创 2018-07-12 15:45:03 · 535 阅读 · 0 评论 -
强连通分量之tarjan缩点——杨子曰算法
强连通分量之tarjian缩点——杨子曰算法这次是真的没有什么模板题,直接开讲吧!首先什么是强连通分量呢? 有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强原创 2018-07-19 13:40:22 · 1081 阅读 · 0 评论 -
网络流之最大流——杨子曰算法
网络流之最大流(FF)——杨子曰算法先上题:在一个国家里,有很多下水道(有向边),下水道都有自己能运输水的最大量,这些下水道把所有的n个城市都连在了一起,现在要从拥有无穷无尽水源的城市通过下水道,输送到城市n(除城市1外其他城市都没有水),问,最多能运输多少水?今天,我们来曰图论中一个高大上的算法——网络流——中的最大流。就是在一个有向图中,水流从一个点流向另一个点,能流过去的水流量。...原创 2018-07-13 12:33:42 · 384 阅读 · 0 评论 -
拓扑排序——杨子曰算法
拓扑排序——杨子曰算法要知道,如果你要用c++打出拓扑排序的代码,你先要学会c++语法和拓扑排序的原理,你要学会c++语法你先要学会基本数学和计算机基础知识(←Are U sure?),你要学会拓扑排序的原理,你先要学会计算机基础知识和栈的使用,那现在让一个什么都不会的人学会拓扑,请输出任意一种合法方案拓扑排序不像我们平时...原创 2018-07-14 11:16:56 · 319 阅读 · 0 评论