[WC/CTS2024] 水镜
不知道大家还记不记得这样一件事情:
- 当我们要证明一个数列 \(\{a_n\}\) 单调递增时,只需证 \(a_i < a_{i+1}\)。
这是我场上的核心思路:如果要说明二元组 \((u,v)\) 合法,只需使得其中每相邻两项都递增。
注意到这题的 \(L\) 是我们自己定的,所以这里就有一个思路:考虑 \(L\) 在那些位置是合法的,如果哪里都不合法就失败了。
考虑相邻的两个 \(h_u\),\(h_v\),不妨设 \(h_u < h_v\),发现若 \(L < \dfrac{h_u + h_v}{2}\),那么必不能翻 \(h_v\),否则必不能翻 \(h_u\)。对于 \(h_u \ge h_v\) 的情况是类似的,但是这里的限制是必翻。
对于每相邻三项,中间那项不能既翻又不翻。于是这就带来了一个对 \(L\) 的限制。不难发现,我们如果要判断二元组 \((l, r)\) 是否合法,只需将包含的限制交起来看看是否为空集就行了,如果存在合法的 \(L\),按照上面的翻法一定可以构造合法。所以我们就找到了充要条件。剩下的随便用一个 rmq 算法即可。
标签:水镜,WC,二元,合法,相邻,CTS2024 From: https://www.cnblogs.com/DCH233/p/18024839