乱记
2024.8.9
普通幂转下降幂——数学归纳证明
二维线性DP用区间DP的四边形不等式优化:记录详情 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
关心全局与关心最值的转换:\(\forall a_i\le x\implies\max(a_i)\le x,\cdots\)
2024.8.10
-
Shopping那道题可以按照dfn DP:子树DP->序列DP
-
组合意义那一道题是因为v的次数最高只有n,其他都只是处理系数,所以直接乘就可以。
-
在总共 \(n\times n\) 个值中除 \(O(n)\) 个值以外操作,相当于整体操作后在对 \(O(n)\) 个值逆操作
-
\(\small点分治\Large\longleftrightarrow \small树上启发式合并\)
\(n^2\to n\log n\)
划分
离散
分治:点分治:递归层数最少(类似二分型分治),树上启发式合并:每次带着继承的重儿子的信息暴力找其轻儿子(类似序列启发式分裂)
2024.8.12
反演:逆运算
子集卷积
至少->恰好->至多
2024.8.13
| EGF | OGF | |
|---|---|---|
| 乘法 | ||
| EXP |
2024.8.15
DGF,迪利克雷生成函数——yzy
偏序集莫比乌斯反演——yzy
埃氏筛复杂度证明——nzy
一个乱搞——lph
num(x=d)=num(d|x)-num(d|px)——way
符号化方法——way
2024.8.18
并查集:路径压缩、启发式合并、随机合并,复杂度都是对的。
线段树:结合律,可直接计算贡献
两倍空间线段树:index(L,R)=L+R|L!=R
2024.8.19
将一大部分进行操作可以转换为全局操作加上对另一小部分逆操作
2024.8.20
A 修改 B 查询,可以变为修改会造影响的地方再单点查询。
比如:
-
单点修改前缀查询<--->后缀修改单点查询
-
单点修改链查询<--->子树修改单点查询
如果询问 \(x\) 的限制是 \(\forall i\le x\) ,则可以离线扫描线,所以 \(\forall i\in [l,r]\) 如果可拆为前缀,那么也可以这么做。
线段树分治、回滚莫队:无法难以删除只能撤销的操作。
长链剖分与重链剖分。
一个使得保证链长度,一个保证跳轻边数量。除了k级祖先,似乎还没有感受到长链剖分的独特优势。
DFN求LCA(与欧拉序求LCA不同)
冷门科技 —— DFS 序求 LCA - 洛谷专栏 (luogu.com.cn)
相当于找
泰勒展开
使得导数的值与原函数相等。
拉格朗日余项——不断使用柯西中值定理。
\(x_0=0\)时的级数:麦克劳林级数
做题方法
-
记录思路和回顾(便于思路变形)
-
强制换角度(新思路)
-
代数几何转化(形式化清晰思路)
矩阵乘法线段树
\(C\times\vec a+C\times\vec b=C\times(\vec a+\vec b)\)
\(A\times \vec c+B\times \vec c=(A+B)\times \vec c\)
kruskal重构树
对每次最小生成树的边建立点,点权等于边权,并用这个点代表合并的集合
构成了一个 \(n\) 个叶子的二叉树
一个合并过程。
例题:到x最短路<=y的节点数
每个最小生成树组成的边的可重集相同。
压位trie
插入删除、前驱后继
可以做到接近 \(O(1)\)
静态树上链整体操作->树上差分
2024.8.21
一个思路:什么时候做贡献!这个怎么做贡献,那个怎么作贡献。
降维方式:
扫描线(配合数据结构)、排序(解决相对大小关系)、CDQ
分治:
使得两边独立。
CDQ分治
分治计算,使得我们只需要考虑跨越中间的部分答案,而不需要考虑整个情况。这样就只需要保证两边的相对大小。
具体情况下,可以考虑让左边产生贡献,让右边计算贡献,以树状数组求解
想方法归纳到偏序问题上。
CDQ优化DP(一维的时候就是树状数组优化DP,二维的时候用CDQ消维)
要求做贡献的时候一定将DP值确定下来。(以“左中右”的顺序更新)
整体二分
首先是二分答案,对于所有询问判断答案是否可行。
必须将做贡献与计算贡献(查询)同时二分,不得调用 \(n,m,q\) 等极大全局变量。
其中二分修改时,分为必定做出贡献与不能做出贡献进行处理。
如果贡献是动态的修改,应保证时间有序。
线段树合并
三种情况
-
对应位置相加
-
一边合并一边更新所穿的传参数[minimax]
-
需要先合并左子树,再利用左子树的信息合并右子树。
KDT
查询矩形复杂度 \(\mathcal O(\sqrt n)\)。即期望访问 \(O(\sqrt n)\) 块平面。
本质:一种搜索,靠剪枝来骗分
KDT优化建图
类似线段树优化建图。
如果算法以\(A\xrightarrow{建出结构}B\xrightarrow{优化}C\),则有时无需将 \(B\) 显式 建出来,而是考虑如何直接优化。
如:[NOI2019弹跳],\(KDT\xrightarrow{建出结构}图\xrightarrow{优化}最短路\)
可以直接 \(KDT\)优化最短路, 复杂度减小一个$\log $
线段树优化建图上Dij的更优算法。
不用显式建图,每次通过线段树\(O(1)\)获得最值所在位置,对所连的 \(c_i\log n\) 个节点直接打tag,然后重复执行,因为每个节点只会取一次,复杂度 \(\mathcal O(n+m\log n)\),这里避免了每次将多个取值等价的节点放入优先队列,使得队列里存的数从 \(m\log n\) 变为 \(m\)。
二进制分组:静态数据结构动态化
根号分治:乘积总数有限。
2024.8.22
建超级原点(有时也可以加上超级汇点),化多元最短路为单源最短路。
可以结合分治使两边独立。
最短路径树/图
对所有使得 \(dis_v=dis_u+v(u,v)\) 成立的 \((u,v)\) 连边就是图。对于每个 \(v\) 只连一条就是树。
常用于简化动态变化的最短路问题。
必走某边最短路
必走 \((u,v)\),则 \(dis(x,y)=mindsis(x,u)+v(u,v)+mindis(v,y)\),再反过来求一遍。
同余最短路
一种优化建图。构建同余下的等价关系。
差分约束
限制 \(x_i-x_j\le w(i,j)\)
注意题目的隐含限制。
Johnson全员最短路(可以有负权)
Johnson费用流
boruvka最小生成树
kruscal重构树
曼哈顿距离最小生成树
给定平面 \(n\) 个点,求曼哈顿距离的最小生成树
-
可以仿照 K - 道路建设 的方式建主席树。
-
支配对?
完全图最小生成树问题:最优性销边Kruskal
点分治
如果对于书上每一组 \((x,y)\) ,其贡献都是 \(w_x+w_y-v_{lca(x,y)}\) 则可以使用点分治。
Kosaraju强连通
在一个点结束递归的时候加入序列,然后倒序遍历这个序列,在反图上DFS,所有能跑到的点即为SCC
算法在稠密图上,可以用bitset加速,做到 \(\mathcal O(\frac {n^2}{w})\)
点双---->圆方树
方圆相连,构成二分图。(二分树?)
叶节点都是圆点
仙人掌可以完全转化为树只是需要增加码量+分类讨论
并且圆方树是有根树。
如果图论题中的部分分有 \(m=n-1\) 那么多半正解与树的情况有关
建虚点其实是为了凑条件,使用一个算法对图的结构有一定要求,建虚点可以凑出。
竞赛图:
\(n\) 个点的有向完全图,缩点后为一条链,必定有一个哈密顿通路。强连通时,有哈密顿回路。
蓝道定理:
将出度序列从小到大排列的
求强连通竞赛图哈密顿回路的方法:
通过图中所有顶点一次且仅一次的通路称为哈密顿通路,通过图中所有顶点一次且仅一次的回路称为哈密顿回路。

浙公网安备 33010602011771号