diary

11.20

补课,题没调出来,大失败

11.21

补课,题调出来了,大成功。

TJOI 异或和

考虑拆位处理,然后转前缀和变成两个点的贡献,发现每个前缀和对答案的贡献是固定两段区间里的值:

  1. 如果当前位为 \(0\),则分前面的值为 \(0\) 且退位,前面的值为 \(1\) 且不退位

  2. 如果当前位为 \(1\),则分前面的值为 \(1\) 且退位,前面的值为 \(0\) 且不退位

用树状数组维护即可。注意讨论不能退位,即当前位为最大值(或位数小于当前位)的情况。

快递员

做题前记得先打个暴力,不然题读错了都不知道。

这实际上就是点对的贡献。路径是没用的。

发现所有点与最终答案呈现单调递增的关系(由答案为根),所以一步一步构造。

我们设当前点为 \(u\),考虑所有能成为最大路径的点对:

  1. 如果有点对经过 \(u\),那么这对点对在 \(u\) 移动时会变大,所以答案即为 \(u\) 为中心时的答案。

  2. 如果两对点对经过 \(u\),那么这对点对在 \(u\) 移动时会变大,所以答案即为 \(u\) 为中心时的答案。

  3. 否则,所有最大点对都在同一个子树内,跳到另外的子树中肯定不优,跳进这个子树找答案就可以了。

为了保证时间复杂度,我们采用点分治的方法,每次寻找子树重心跳。

需要注意两点:

  1. 可能会跳到重复的点,这时肯定无更优点了,直接退出即可。

  2. 答案可能不会变小,具体表现为原来不是最大的点对变为最大,所以每次要更新而不是直接覆盖。

11.22

P9361

遇到这种走路的题目,很多都要使用倍增加速。

例如这道题,一个暴力是记录每个点 \(k\) 步后 \(5\) 场比赛中能到达的最左端,阿Q 只要有一场比赛排名比最左端高就是一组合法解。

由于信息很好合并,可以使用倍增加速。

11.23

原来这里是写了一段整体二分的,再一看怎么没有了,但是我也不想补了。

11.24

P5537 【XR-3】系统设计

一开始从底往上哈希,怎么都哈希不出来。但是我为什么要先想那个不符合直觉的做法呢?其实我是不知道的。

路径固定,考虑哈希判断两段路径形态是否一样。

我们树链剖分,将树剖成若干条链,在链上记录哈希值并二分得到最深能走多远。走不了了再跳轻链。由于最多只会有 \(\log n\) 次跳轻链的过程,所以时间复杂度为 \(O(n\log^2 n)\)

P5157

神秘的离开性质实际上就是树在删除中只能有一个联通块。那么离开的次序(\(u\)\(v\) 前)意味着 \(v\) 作根时,\(u\)\(u\) 的子树要先删完。将这部分点向 \(v\) 连有向边,然后通过判环判断是否无解,若有解解就是那些入度为 \(0\) 的点。

线段树优化建图即可。

posted @ 2023-11-22 08:17  _maze  阅读(17)  评论(0编辑  收藏  举报