倍增

倍增-总结

序列

前2题题意:https://blog.csdn.net/weixin_52536621/article/details/127104830

区间分段

考虑进行预处理每个数如果只能有一段到达的位置,再进行倍增,最后倍增跳跃即可。

最优贸易简化版

预处理每个点向后走 \(2^j\) 不的最小买入价格、最大卖出价格、最大收益。

天才ACM

这题真正把二分和倍增拉开差距了。如果用二分,每次需要 \(O(n\log n)\) 的时间,那么如果段很小,那么需要 \(O(n^2 \log n)\),如果用倍增,只需要将其拆解成 \(\log\) 段,每段是 \(O(n\log n)\),那么则只需 \(O(n\log^2 n)\),效率远超二分。如果再用二路归并优化,只对新增部分排序,那么可以进一步优化成 \(O(n\log n)\)

https://www.acwing.com/activity/content/code/content/5464657/

树上

LCA+习题

前4题

P3379 【模板】最近公共祖先(LCA)

https://www.luogu.com.cn/article/oatnrw81

以及总结中的。

CF379F New Year Tree
CF29D Ant on the Tree

纯粹用 LCA 作为工具。

闇の連鎖

结合了环的性质的考察,对于每一条边,分类讨论,然后也是结合了差分算法。

P1084 [NOIP2012 提高组] 疫情控制

最小值问题,考虑二分,然后贪心地让每个军队尽可能往上(使用倍增)。

运输计划

最小值问题,考虑二分,然后根据 \(mid\) 删边,运用树上差分求满足公共要求的路径,对于每个点求子树和,注意求子树和可以利用 dfs 序的逆序

天天爱跑步

由于每个玩家是一条路径,运用树上差分标记玩家,注意记录的值可以没有意义

其他技巧

若干点 \(\text{LCA}=\text{LCA}(\text{dfs序}\min, \text{dfs序}\max)\)

总结

线性的倍增

一般记录从位置 \(i\) 往后跳 \(2^j\) 步的信息;

树上的倍增

一般记录从点 \(i\) 往父节点方向跳 \(2^j\) 步的信息;

可以与二分结合,也可能在某些问题的处理上优于二分。

可以与树上的其他知识点,如 dfs 序、差分,用的比较多

也有的是直接应用,作为工具。

posted @ 2024-09-29 15:37  wscqwq  阅读(1)  评论(0编辑  收藏  举报