AGC050A 题解

给出一个最易理解的做法。

注意到 \(n=1000\),而限制为 \(10\),不难想到是 \(\log n\)。遍历我们学过的所有严格 \(\log\) 的东西,不难想到线段树。

把所有的页面看做一个序列。先把 \(1\) 当做根节点,建出一个线段树来。此时从 \(1\) 出发,只需要走 \(\lceil\log n\rceil\) 步就能到达所有节点,但是其他的节点可能到不了别的节点。

此时我们的叶子结点还没有往外连边,考虑利用叶子结点,然而我们并不知道叶子该往哪连。

此时用到本题最人类智慧的一步:

考虑把这个序列首尾相接,变成循环序列,然后以每一个点为根建线段树。此时把重复的边去掉,恰好满足每个点两条出边,且任意一个点为根都有一棵完整的二叉树。

我们如何想到这一步?发现线段树每个点往 \(2i\)\(2i+1\) 连是一个很优美的东西,考虑对叶子结点沿用这个东西,那么就只能对 \(n\) 取模。

posted @ 2024-11-28 19:24  Linge_Zzzz  阅读(5)  评论(0编辑  收藏  举报  来源