mygr main()
单调队列-单调栈
搜索
单调队列-单调栈
发表于
2077-03-02
|
更新于
2025-03-06
|
浏览量:
Trick
当无法使用双指针(不具备单调性时),考虑转化为单调队列解决
# 划分
文章作者:
my9r
文章链接:
http://example.com/2077/03/02/%E7%AE%97%E6%B3%95/%E5%8D%95%E8%B0%83%E9%98%9F%E5%88%97-%E5%8D%95%E8%B0%83%E6%A0%88/
版权声明:
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议。转载请注明来源
mygr main()
!
算法
上一篇
区间的序列区间查询
有几种常见模型: 区间查询区间序列中区间的最值 这种问题一般都是在区间序列的基础上进行分块,然后考虑对块内所有区间合并答案,对散块用正常方法暴力查询,然后根号平衡即可 例题:# P11750 「TPOI-1D」谢谢您。 区间查询区间并 转化为对区间序列的扫描线问题,元素序列上上标记 “上次被区间标记的时间”,查询时直接查询 “上次出现时间在左端点之后的” 元素的权值和,用分块朴素维护即可 例题:# P6783 Ynoi2008 rrusq
下一篇
博弈论
# 从零开始的博弈论 # 何为博弈论 相关链接:[[异或]] 反 Nim 游戏 对于一个游戏,当一个人无法取时则胜利 结论: 当场面上 $\forall i,a_i=1$ 时,若 $\mid a\mid \mod 2=0$ 时则必胜,否则必败 当场面上存在一个位置使得 $a_i > 1$ 时,若 $\oplus_{i}a_i \not = 0$ 则先手必胜,否则必败 考虑证明 对于结论一是好证的 对于结论二,则每一步先手都必定能够构造出一种方式使得 $\oplus_{i}a_i=0$ ,而后手则一定不能,由于当前局面并非所有数都为 $1$ ,且会留给后手一个异或和为 $0$ 的状态,故此时后手的局面中必然存在 $\ge 2$ 个非 $1$ 的数,于是最后面一定会留给先手一个有且仅有一个数使得其 $> 1$ 的情况,此时就可以随意控制其到上一个结论了 当遇见与异或相关的 SG 函数时,可以考虑将其往线性基上面去靠 New Nim 博弈论不一定要推奇奇怪怪的式子,也有可能从最朴素的 dp 出发也能达到推出类 SG 函数的状态式,而且就大部分题目而言的话还是 dp...
相关推荐
2077-03-02
AC自动机
当字符集较大时,可以考虑使用可持久化数组维护 ch 数组 AC自动机上判断某串的子串,考虑枚举前缀然后跳 $fail$ ,可以考虑建出 $fail$ 树,然后在走前缀的过程中用数据结构或连边建图表示出包含关系 # birthday
2077-03-02
BSET定理
相关链接:[[矩阵树定理]],[[欧拉回路]] 对于一个有向图,对于它的欧拉回路个数 $ec(G)$ ,有 $$ec(G)=root_{w}(G)\sum_{v\in V}(deg_v -1)!$$其中 $root_w(G)$ 表示以 $w$ 为根的 $G$ 的外向生成树有多少种 注意BEST定理计算的是两点间若干条边有顺序的方案数,如果是 “某条边能够经过的次数” 则应当除去 $\frac{1}{w!}$ 将顺序消掉 例题: # Counting Prefixes # C4
2077-03-02
DAG链剖分
对于 DAG 上的节点,设 $f_{u}$ 表示以点 $u$ 为结束点的路径数,$g_u$ 表示从点 $u$ 开始的路径数,那么对于节点 $u$ 的所有出边,若存在一条边 $u \rightarrow v$ 使得 $2f_{v}>f_{u},2g_{v}>g_{u}$ ,那么我们则称 $u,v$ 是一条重边 对于任意一条路径,其路径上的轻边数量一定是 $O(logn)$ 级别的,因为每走一次轻边路径数都会折半 最常用的场景是在 [[后缀自动机]] 上快速的子串定位 为什么不倍增跳呢? #under_construction
2077-03-02
KD-Tree
本质:将一个 $k$ 维的立方体内的点压缩到序列上 $O(n^{1-\frac{1}{k}})$ 个不相交区间 而这个序列就可以用正常方法去维护了 例题:# P6783 Ynoi2008 rrusq
2077-03-02
Kmp
kmp的fail数组既可以指最长的前后缀长度,也可以指当前位的最长的前缀匹配,也可以指最长的循环节长度 #under_construction 字符串的所有前缀中,有多少个可以构成形如 “ABABA” 由 k 个A 组成的字符串 通过不断跳fail的方式可以求出最短的前缀匹配,可以通过继承优化到 $O(n+m)$ 例子
2077-03-02
RMQ问题
考虑一个 $O(n)$ 预处理,$O(1)$ 查询的 RMQ 算法 考虑将序列按照 $logn$ 进行分块,对于不在一个同块内部的询问,我们用ST表维护整块的信息,再额外维护块内的前后缀最大值即可 对于在一个块内的查询,我们可以开一个单调栈维护一个前缀的单调下降序列,每一位使用一个整数状压单调栈内拥有的元素,查询 $l,r$ 时直接找 $r$ 对应的单调栈中第一个 $\ge l$ 的位置即可
my9r
Just the owner of this blog
文章
157
标签
15
分类
0
Follow Me
公告
This is my Blog
目录
1.
Trick
最新文章
文化课专栏
2077-03-02
AC自动机
2077-03-02
BSET定理
2077-03-02
DAG链剖分
2077-03-02
KD-Tree
2077-03-02
搜索
数据加载中