CF1797E Li Hua and Array

发布时间 2023-04-09 21:15:12作者: Mysterious_Cat

个人思路:
线性筛求出来 \(\phi(x)\),然后 \(x\) 成为 \(\phi(x)\) 的儿子,建树。

然后接下来就和 \(\phi\) 没关系了,令第 \(i\) 个数初始直接对应点在 \(a_i\) 上。

1 操作相当于区间跳到父亲
2 操作相当于求区间内所有点到 LCA 的距离之和。

1 暴力删就行了,维护个链表,一个点跳到 \(1\) 就从链表里删了。
2 感觉可以 LCA 欧拉序转 RMQ,st 表维护。然后有 LCA 之后就是 \(\sum\limits_{l\le i \le r} dep_{a_i} - (r - l + 1) \times dep_{LCA}\)

但是有 1 操作,所以搞一棵线段树,维护区间 \([l,r]\) 最小欧拉序和最大欧拉序以及深度之和,支持单点修改。

时间复杂度是 \(\Theta(A\log_2 A + n\log_2^2n)\) 时间复杂度看上去很对。

但是显然我赛时写不完了。