摘要: sol: 本人绞尽脑汁在想只带一个 log 的算法 (可惜没有想出来) 最后还是只能二分 233 … 核心思想 : 倍增 + 二分答案。 对于左边部分路径,由于起点是固定的,可以直接倍增搞定。 这时候右边部分路径的起点就是 x (我们通过上一个步骤求出来的答案) 其实左半部分和右半部分的求法本质不同 阅读全文
posted @ 2021-10-01 20:46 仰望星空的蚂蚁 阅读(17) 评论(0) 推荐(0)
摘要: sol: 这道题是求两点间第 k 小的数。 常规做法树链剖分是三个 log ,LCA + 主席树可以做到一个 log 。 所以提供一个维护树上信息的新姿势:用主席树维护当前点到根的路径的信息,借助 LCA 做到直接查询。(经典的运用还比如求路径最小 / 大值之类的)。 局限性在于不能维护较复杂的信息 阅读全文
posted @ 2021-10-01 18:10 仰望星空的蚂蚁 阅读(16) 评论(0) 推荐(0)
摘要: sol: 考虑用树套树维护二维信息。 这里标记比较复杂,所以不好下传,考虑 标记永久化。 每次修改区间的时候,把遍历到的点都修改 mx ,对于完全覆盖的区间则同时修改 tag 和 mx 。(这里的修改可以是区间加,也可以是区间取 max)。 查询的时候,如果是完全覆盖的区间就返回 mx ,否则当前点 阅读全文
posted @ 2021-10-01 09:05 仰望星空的蚂蚁 阅读(19) 评论(0) 推荐(0)
摘要: 考点:分治思想 + 线段树。 (区间问题常见思考方式 考虑区间答案 = 左区间答案 + 右区间答案 + 跨区间答案。 注意到每次加入一个数时 gcd 要么不变,要么缩小到原来的 1/2 所以本质上只用 log a_i 个不同取值 这样双指针扫描就可以通过本题。 #include <bits/stdc 阅读全文
posted @ 2021-10-01 08:51 仰望星空的蚂蚁 阅读(21) 评论(0) 推荐(1)