随笔分类 -  算法

摘要:P6136 【模板】普通平衡树(数据加强版) 是一棵treap,即以\(val\)为关键词是一棵bst,以\(rnd\)为关键词是一个堆。采用split()与merge()而非rotate()维护,达到“非旋”的效果,使速度变快,码量变小,又称“非旋treap”。 定义 struct Node{ i 阅读全文
posted @ 2022-09-14 22:09 Seg_Tree 阅读(20) 评论(0) 推荐(0)
摘要:某种意义上,在字典树上做KMP。 \(fail_i\)表示在字典树上第\(i\)个结点上,发现接下来无可匹配了以后,需要跳到哪个结点。洛谷日报2018#44 [水手hwy]强势图解AC自动机里的动图很不错,对\(fail\)指针相关解释得很清晰。 艹感觉当时跟洛谷日报学得太顺利没过啥坎没啥好提到的, 阅读全文
posted @ 2021-10-23 09:27 Seg_Tree 阅读(16) 评论(0) 推荐(0)
摘要:\(kmp_i\)定义: 定义一个字符串\(s\)的border为\(S\)的一个非\(S\)本身的字符串\(T\),有\(T\)既是\(S\)的前缀又是\(S\)的后缀。 如: \[S = abcdzzzabcd \]当然我们要的是最长border,于是有 \[T = abcd \]对于\(s\) 阅读全文
posted @ 2021-10-23 09:12 Seg_Tree 阅读(18) 评论(0) 推荐(0)
摘要:和EK一样的建图。 bfs()判是否还有增广路并将图分层,dfs()找增广路。 有关分层图: \(dpt_i\)表示\(s\)点到\(i\)点需要经过的路径条数。 找出所有的弧,满足 1.\(dpt_u+1=dpt_v\) 2.顺着该弧往下走,保证经过的边都满足条件1,能够达到\(t\) 这些弧组成 阅读全文
posted @ 2021-10-10 19:01 Seg_Tree 阅读(24) 评论(0) 推荐(0)
摘要:可持久化线段树,以求区间第k小为应用举例。其实区间第k小是权值线段树、可持久化线段树与前缀和的综合应用,奈何中者的基础应用过于鸡肋,懒得从那开始学。 考虑区间第k与与可持久化线段树的适配。 先离散化,开桶。 第\(i\)棵线段树的所有叶子结点,是储存了原序列\([1,i]\)区间所有值的一列桶;树上 阅读全文
posted @ 2021-10-01 13:17 Seg_Tree 阅读(24) 评论(0) 推荐(0)
摘要:P5490 【模板】扫描线 建立正常的,数学学科中的直角坐标系,将读入数据全部简化为一根一根的竖线。 for(int i=0; i<n; i++){ X[i<<1]=read(); int y1=read(); X[i<<1|1]=read(); int y2=read(); line[i<<1]= 阅读全文
posted @ 2021-09-30 09:10 Seg_Tree 阅读(24) 评论(0) 推荐(0)
摘要:\(nlog(n)\)初始化,\(O(1)\)在线查询,简短高效的RMQ,虽然简单但用得少Seg_Tree赛高!,所以要写一下。 以后要多用用,又短又快,还可以学四毛子。 for(int i=1,res=0; i<=N; i++) log[i]=(res+=(1<<res+1<=i)); 初始化,这 阅读全文
posted @ 2021-09-30 09:10 Seg_Tree 阅读(18) 评论(0) 推荐(0)
摘要:P3690 【模板】动态树(Link Cut Tree) 基本概念其他博客里都有,就不重复了。 本质维护一个文艺splay森林。 每一个splay中的点集合在实树中构成一条链 其中splay保证以每个节点在实树中的\(dpt\)为\(key\),是一棵bst。 一棵splay的根也会有一个\(fa\ 阅读全文
posted @ 2021-09-30 09:08 Seg_Tree 阅读(26) 评论(0) 推荐(0)

https://pic.cnblogs.com/face/