不翻题面 5.
Galois_Field_1048576
·
·
题解
考虑进行差分。
可以变成如下三种操作:
目标 \forall i \in [1, n], d_i=0。
首先考虑如果 \forall i \in [2, n], d_i=0,那么可以执行 |d_1| 次 2 或 3 操作。
于是我们就对于每一个 2 \sim n 的 i,都可以使用 1 或 2 操作(取决于 d_i 的符号)来转换到 d_1。将答案再加上 d_1 即可。
上伪代码(使用 \KaTeX 排版):
\begin{array}{l}
\textbf{input}~T \\
\textbf{for}~w=[1,T] \\
\qquad\textbf{input}~n,a_i \\
\qquad\textbf{for}~i=[1,n]\\
\qquad\qquad d_i\gets a_i-a_{i-1}\\
\qquad p \gets 0 \\
\qquad\textbf{for}~i=[2,n]\\
\qquad\qquad \textbf{if}~d_i<0 \\
\qquad\qquad\qquad p \overset-\gets a_i \\
\qquad\qquad\qquad a_1 \overset+\gets a_i \\
\qquad\qquad\textbf{else} \\
\qquad\qquad\qquad p \overset+\gets a_i \\
\qquad\textbf{output}~p+|a_1|
\end{array}