CF

m显然,对于每个操作,都是将 $a_i$ 变为 $10^9$

那么假设有一个数列 $b_1, b_2, \ldots,b_n$,求它的建图后的直径。

对于两个点 $l, r$,会有两种走法:

  1. 直接走两者相连的边,$\min(b_l,b_{l + 1},\ldots,b_n)$,

  2. 先走到外界 $k$,再走回来,不妨设 $k < l$,则所需要的 $\min(b_k, b_{k + 1}, \ldots,b_l) + \min(b_k, b_{k + 1}, \dots,b_r)$

令 $r = \min(b_1,b_2,\ldots,b_n)$,

显然,在第 $2$ 种情况的时候,$l$ 与 $r$ 的最短路为 $2 \times r$,

所以直径为$$ \max_{1\leq l <r\leq n} (\min(2\times r,\min(b_l,b_{l + 1},\ldots,b_n))) $$ 化简一下柿子为

$$ \min(2\times r,\max_{1\leq l <r\leq n}\min(b_l, b_{l + 1}, \ldots,b_r)) $$ 显然为

$$ \min(2\times r,\max_{1\leq i< n}\min(b_i,b_{i+1})) $$ 考虑二分答案 $x$,

由上面的分析,若 $2 \times a_i < x$,则 $a_i$ 必改为 $10^9$,

那么考虑还能操作的次数 $use$,分为 4 种情况,

  1. $use < 0$,则说明 $x$ 不可达到;
  2. $use = 0$,说明不能再操作了,判断 $\max_{1\leq i\leq n}\min(b_i,b_{i+1})$ 是否达到 $x$ 即可;
  3. $use = 1$,为了能让 $\max_{1\leq i\leq n}\min(b_i,b_{i+1})$ 达到 $x$,也就是存在一个数 $j(1 \leq j < n)$,使得 $a_j$ 与 $a_{j + 1}$ 都大于 $x$,即只要存在一个 $p$,$a_p >= x$,
posted @ 2022-10-02 09:28  wangzhongyuan  阅读(2)  评论(0编辑  收藏  举报  来源