摘要:
这篇文章是较于模板的知识,如果想要做题,左转例题篇 定义 树链剖分是什么? 树链剖分指一种对树进行划分的算法,它先通过轻重边剖分将树分为多条链,保证每个点属于且只属于一条链,然后再通过数据结构来维护每一条链,包含重链剖分、长链剖分和实链剖分,我们平常使用的都是重链剖分。 树链剖分解决了什么? 树上的 阅读全文
摘要:
Description Input Output Sample Input Sample Output Hint 因为若两个矩阵可以相乘,那么A[i].y=B[i].x,故可以把n个矩阵的序列拉成2n−1数的序列 简单的区间DP,设f[i][j]为[i,j]为一个矩阵的最小代价 $f 阅读全文
摘要:
题目链接 退役前发文了。 排序和离散都是稳定的一只log的做法,这里给大家介绍一种玄学复杂度的数据结构,hash表。 hash表的思想很简单,将所有对mod取模在一个同余类的数用链表串起来 (不要告诉我你不会链表),这样时间复杂度就依赖于mod大小。**理论上来说**,mod 阅读全文
摘要:
差分与前缀 定义一个序列a,它的差分序列为bn=an−an−1(后向差分),前缀和序列为bn=bn−1+an,显然,差分与前缀和互为逆运算,这意味着,对差分序列求前缀和就是原序列;同理,对前缀和序列求差分也是原序列。 重要结论 1、如果有了前缀序列,我们就可以O(1) 阅读全文
摘要:
倍增是枚举的一种特殊方式。 假如我们有一根数轴,要从1000走到0 我:一步步走就行了,一定会到的 ZHX:SB题,29=512,从1000跳512步,还剩488;28=256,从488跳256步,还剩232;27=128,从232跳128步,还剩104; 26=64,从10 阅读全文
摘要:
枚举有什么好写的~( ̄▽ ̄)~ 枚举算法是我们在日常中使用到的最多的一个算法,它的核心思想就是:枚举所有的可能。 枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件:(1)可预先确定候选答案的数量;(2)候选答案的范围在求解之前必须有一个确定的集合。 没有剪枝,没有优化,没有 阅读全文
摘要:
以作者的水平为准 基础算法:枚举——>倍增 差分(前缀和)——>二维 贪心 分治:归并排序(逆序对) 二分答案 二分查找 快速排序——>离散化 递归/递推 搜索:深搜(所有方案),宽搜(最优解) DFS优化:迭代 最优性剪枝/可行性剪枝/搜索顺序 记忆化搜索 折半搜索 A*/IDA* BFS优化:双 阅读全文
摘要:
题目链接 题目大意:一个n个节点、m条边的无向连通图。我们依次用l,a描述一条边的长度、海拔。对于接下来Q个询问,每一天Yazid都会告诉你他的出发点v,Yazid需要从v到1,以及当天的水位线p,所有海拔不超过水位线的边都是有积水的。 每一个询问,Yazid在出发点都拥有一辆车。这辆车不能经过有积 阅读全文
摘要:
题目链接 不会推结论,单调队列万岁!题目大意: 给出若干个等腰直角三角形的顶点,要求有多少个点没有被其他三角形覆盖 先按x坐标对顶点排序,单调队列维护所有未被覆盖的点,对于i,把它可以覆盖的点从队尾弹出(即队尾元素的左端点≥i的左端点),执行完操作后,如果i未被现在的队尾覆盖就入队。 最 阅读全文
摘要:
此题理论最优解 题目链接 题目大意:路径修改,子树求和 明显是树剖的模板,但树剖的时间复杂度高达了优秀的Θ(Qlog2n),而实际上树上差分可以把时间复杂度降到Θ(Qlogn)。 设tag[x]为1到x的路径上全都加了这个值,显然对于$(x,y) 阅读全文