推柿子
8.8 T3
我们浅浅跳过一下前面的二分和贪心。
\[f(a, b, c, n) = \max_{i = 0} ^ n \{(ai + b) \bmod c\} \\
g(a, b, c, n) = \min_{i = 0} ^ n \{(ai + b) \bmod c\}
\]
求 \(f, g\)。要求复杂度 \(\mathcal{O}(\log V)\)。
-
核心想法:交换 \(a, c\)。
-
边界条件与性质:
\[f(a, b, c, 0) = g(a, b, c, 0) = f(0, b, c, n) = g(0, b, c, n) = b \bmod c \\ f(a, b, c, n) = f(a \bmod c, b \bmod c, c, n) \\ g(a, b, c, n) = g(a \bmod c, b \bmod c, c, n) \]
我们开始推导。
\[\begin{aligned}
& f(a, b, c, n) = \max_{i = 0} ^ n\{(ai + b) \bmod c\} \\
& j = \lfloor \dfrac{ai + b}{c} \rfloor \implies ai + b \le c(j + 1) - 1 \implies i \le \min\{n, \lfloor \dfrac{cj + c - 1 - b}{a} \rfloor\} \\
& j = \lfloor \dfrac{ai + b}{c} \rfloor \implies j \le \lfloor \dfrac{an + b}{c} \rfloor \\
& \begin{cases}
\ j = \lfloor \dfrac{an + b}{c} \rfloor \implies (ai + b) \bmod c \le (an + b) \bmod c \\
\ j \le \dfrac{an + b}{c} - 1 \implies cj + c - 1 - b \le an + b - b - 1 \le an \implies i \le n
\end{cases} \\
& (ai + b) \bmod c = ai + b - \lfloor\dfrac{ai + b}{c}\rfloor c \\
& \implies f(a, b, c, n) = \max \{(an + b) \bmod c, \max_{j = 0} ^ {\lfloor \frac{an + b}{c} \rfloor - 1} \{(a \lfloor \dfrac{cj + c - 1 - b}{a} \rfloor + b) - cj\}\} \\
& = \max \{(an + b) \bmod c, c - 1 - \min_{j = 0} ^ {\lfloor \frac{an + b}{c} \rfloor - 1} \{(cj + c - 1 - b) - a \lfloor \dfrac{cj + c - 1 - b}{a} \rfloor\}\}\\
& = \max \{(an + b) \bmod c, c - 1 - \min_{j = 0} ^ {\lfloor \frac{an + b}{c} \rfloor - 1} \{(cj + (c - 1 - b)) \bmod a \}\}\\
& \implies f(a, b, c, n) = \max((an + b) \bmod c, c - 1 - g(c, c - b - 1, a, \lfloor \dfrac{an + b}{c} \rfloor - 1))
\end{aligned}
\]
同理,我们有:
\[g(a, b, c, n) = \min(b, a - 1 - f(c, c - b - 1, a, \lfloor\dfrac{an + b}{c}\rfloor - 1))
\]
于是我们完成了交换 \(a, c\)。由于 \(a\) 可以对 \(c\) 取模,复杂度为单 \(\log\)。

浙公网安备 33010602011771号