AGC050A 题解
给出一个最易理解的做法。
注意到 \(n=1000\),而限制为 \(10\),不难想到是 \(\log n\)。遍历我们学过的所有严格 \(\log\) 的东西,不难想到线段树。
把所有的页面看做一个序列。先把 \(1\) 当做根节点,建出一个线段树来。此时从 \(1\) 出发,只需要走 \(\lceil\log n\rceil\) 步就能到达所有节点,但是其他的节点可能到不了别的节点。
此时我们的叶子结点还没有往外连边,考虑利用叶子结点,然而我们并不知道叶子该往哪连。
此时用到本题最人类智慧的一步:
考虑把这个序列首尾相接,变成循环序列,然后以每一个点为根建线段树。此时把重复的边去掉,恰好满足每个点两条出边,且任意一个点为根都有一棵完整的二叉树。
我们如何想到这一步?发现线段树每个点往 \(2i\) 和 \(2i+1\) 连是一个很优美的东西,考虑对叶子结点沿用这个东西,那么就只能对 \(n\) 取模。