QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: jiangly

Posted at: 2025-12-13 00:03:37

Last updated: 2025-12-13 00:03:39

Back to Problem

题解

每个非最大值的格子都和某个比它大的格子相邻,这就意味着从任意一个位置开始,不断走向周围的更大的格子,一定能走到最大值。

用一行把网格分成两部分,找到这行当中的最大值 $X$,有几种情况:

  • $X$ 周围的格子没有更大的,则 $X$ 就是整个网格的最大值。
  • 当前询问过的最大的格子 $Y$ 在上方,则从 $Y$ 开始不断走向更大的格子一定不可能到达下方,因此最大值一定也在上方。
  • 同理,若当前询问过的最大的格子在下方,则最大值一定也在下方。

交替用行列划分网格,可以在不超过 $\frac32n+12$ 次询问中转成成 $n$ 减半的子问题,故总询问次数不超过 $3n+12\log_2 n$。

Comments

No comments yet.