摘要:
By:大奕哥 今天给大家介绍行列式 引入两个概念 排列和逆序 排列即为一个序列,逆序为i<j&&a[i]>a[j]的个数记为r(a[1],a[2]...a[n]) 然后我们对于一个n^n的行列式,他的值就是Σ(-1)^r(j1,j2,j3...jn)*a[1][j1]*a[2][j2]*...*a[ 阅读全文
摘要:
Matrix-tree定理,给出一个无向图,问求出的生成树方案有多少种方案,利用Matrix-tree定理,主对角线第i行是i的度数,(i,j) 值为i和j之间边的数量,然后删去第一行第一列,利用初等变换求出行列式的绝对值就是答案。 附上代码——by VANE UPD:对于有向图而言 1、无向图中是 阅读全文
摘要:
学习了一个新的最小生成树的算法,Boruvka(虽然我不知道怎么读)。算法思想也是贪心,类似于Kruskal。 大致是这样的,我们维护图中所有连通块,然后遍历所有的点和边,找到每一个连通块和其他连通块相连的最小的一条边,然后把连通块合并起来,重复这个操作,直到剩下一整个连通块,最开始状态是每个点是一 阅读全文
摘要:
cf的一道题,非常有意思,题目是问图中是否存在两个点,使得这两个点之间有三条路径,而且三条路径没有公共点。 其实就是判断一下是否为仙人掌就行了,如果不是仙人掌的话肯定就存在,题目难在输出路径上,改了半天也不对,借鉴了一个dalao的代码。感觉非常神奇。 首先是判断是否为仙人掌,利用返祖边即可,如果一 阅读全文
摘要:
写了一道欧拉回路的模板题。先判断是否是欧拉回路,有向图和无向图有一点点不同,然后就是特判独立点的存在。 之后是输出路径,和dls学的dfs,利用last数组的更新可以做到线性的复杂度,否则一不小心就会写成m^2的复杂度 附上代码——by VANE 下面的By:大奕哥 我们就直接搜索啦,对于无向图需要 阅读全文
摘要:
这题贼墨迹,写了一天多。 复杂度O(nlog^4n) 用到了我会的最高端的数据结构 树链剖分套线段树套平衡树 做个树链剖分这样就可以用线段树了 做个线段树这样就可以用平衡树了 然后一层一层向下搜 二分答案 或许这就是高端的暴力吧 阅读全文
摘要:
番外篇 转眼间我学oi已经一年了,可回头想想这一年来的收获也没有什么,大部分时间都荒废掉了。 下半年开学后,学物竞的王洋转来了我们电竞,虽然他之前是我的同班同学但也没怎么交流过。 这下我们又成为了oi同学。 看着他敲着openjudge我仿佛看到了当时的自己,不过他学得很快,仅仅一个月他就追上了我们 阅读全文
摘要:
这道题我由于智障错误导致一直错。 在树上建主席树,加上lca思想,很简单。 BZOJ最后换行会PE。。。。 阅读全文
摘要:
和大奕哥一起学习了主席树,机房里杰哥看了之后一直说可以优化空间,题解写的太low了,所以我今天写了一个动态开点的线段树来优化一波空间,bz上试了一下,确实比网上看的题解省空间。 网上的题解是每一次都新开点,是可持久化的写法,我写的是正经的线段树动态开点。 ——by VANE 附上代码 阅读全文
摘要:
终于学了这个我仰慕已久的算法。 对于待修改的主席树我们只需要多开一维,进行修改后的求和。复杂度进化为O(nlog^2n) 我们需要开R0 L0两个数组记录树状数组的“路径” 然后其他操作就和主席树一样咯! 阅读全文
摘要:
这个东西有很多名字,主席树,可持久化线段树,函数式线段树。 我们用前缀和的思想,对每个前缀建线段树,区间表示数的大小,进行二分。 我在B站学算法:https://www.bilibili.com/video/av4619406/?from=search&seid=273452703862300118 阅读全文
摘要:
当平衡树需要可持久化的时候,意味着我们需要访问以前的某个时间点的平衡树,就要保持以前的树形态不变,新建一个时间戳,构建一棵新的树。 如果用以前的旋转treap可能就不方便做到(又要打时间戳,又要新建节点,又要旋转),而且涉及到旋转,空间可能会承受不住,我们需要用到一种新的平衡树——fhq treap 阅读全文
摘要:
增加Split(分裂),Merge(合并)操作,非常好写,时间也不比普通treap慢什么。 阅读全文
摘要:
对于历史版本只要从根节点入手即可,在修改的过程中再把这一时间的子树建出来。 时间复杂度O(qlog(n+q))。 阅读全文
摘要:
第四章 晚上来机房的人越来越多了,我也注意到一个常年独自坐在一个角落的男人————郝哥。 郝哥为人很安静,只是那时我还不知道他好不好,就没有与他交流过什么,这个优秀的男人以后我们还会提到,这里先不讲。 从郑州回来后就开始学习那些牛逼的算法,学来学去也不忒明白,后来我们又去参加了省选,被虐的稀里糊涂的 阅读全文
摘要:
裸treap,求前驱后继,这里使用了一个二维结构体。 阅读全文
摘要:
出纳员是一个优秀的职业。 根据题意要构造一种数据结构使得能动态维护一个权值大于等于min的集合,并且支持查询排名等操作,数据范围来看复杂度是nlogn 由以上得出结论使用平衡树 我用的是treap,如果删的话就要把整颗左子树和根节点一起删再处理右子树的,其他操作和普通平衡树一样,可以看我之前那个模板 阅读全文
摘要:
本来想作为水题刷,很快就想出了做法,结果细节实现太差改了好久。。。 根据题意你会发现其实就是求方程 ax+by=k解的个数。 此时 a=f[i],b=f[i+1],而(x,y)就是你要求的数对。 于是你就对斐波那契的每一项进行扩展欧几里得,然后计算个数,注意向上取整!!! 此时你把y转换为最大值应该 阅读全文