上一页 1 ··· 4 5 6 7 8
摘要: #tarjan求LCA ##前言 tarjan求LCA的时间复杂度是$O(n+2*q)$,是非常优秀的复杂度,但缺点就是只能离线。(懂了,去学欧拉序$O(1)$求LCA) tarjan求LCA需要用到并查集,本人用的代码: int f[N]; void cz(int x){return x==f[x 阅读全文
posted @ 2022-02-08 07:47 AIskeleton 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 前置芝士:树链剖分、线段树。 首先树剖套线段树是显然的因为标签这么写。 线段树维护什么? 如果只维护区间最小值和区间最大值似乎不足以解决问题。 题目要求区间最值之差,而且可以发现,对于同一个区间,从左到右和从右到左所得到的答案是不同的,所以要按方向不同分开维护。 所以线段树维护四个值: 1.区间最大 阅读全文
posted @ 2022-02-07 17:06 AIskeleton 阅读(15) 评论(0) 推荐(0) 编辑
摘要: #启发式合并 upd:学了线段树合并之后回来,决定将两篇分开 ##关于启发式合并: 首先对于启发式算法的定义: 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 比如启发式搜索$A^*$算法。 至于启发式合并是什么,请先考虑一个问题:将$n$个元素个数为$m$的线性数据结构合并,求时间复杂度 阅读全文
posted @ 2022-01-27 10:04 AIskeleton 阅读(154) 评论(0) 推荐(0) 编辑
摘要: #背包问题 前言:背包问题的学习笔记和模板例题整理。 ##01背包 有$N$件物品和一个容量为$V$的背包。第$i$件物品的费用是$c_i$,价值是$w_i$。求解将哪些物品装入背包可使价值总和最大。 ###分析: 每种物品都只有一件。 都只有放或是不放两种选择。 用$f_{i,v}$表示只放入前$ 阅读全文
posted @ 2022-01-23 20:32 AIskeleton 阅读(38) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8