ARC073F Many Moves
当你填表法推了半年没推出来,为什么不试试刷表法呢?
在一行中有 $n $个格子,从左往右编号为 \(1\) 到 \(n\)。
有 \(2\) 颗棋子,一开始分别位于位置\(A\)和\(B\)。按顺序给出\(Q\)个要求,每个要求是如下形式:
- 给出一个位置 \(x_i\),要求将两个棋子中任意一个移动到位置 \(x_i\)。
将一颗棋子移动一格需要花费 \(1\) 秒,就是说将棋子从 \(X\) 位置移动到 \(Y\) 位置需要花费 \(|X-Y|\) 秒。
为了回答要求,你只能移动棋子,并且同一时刻只能移动一颗棋子。要求的顺序是不可更改的。在同一时间允许两颗棋子在同一个格子内。
\(n,q\le 2e5\)。
刷表法的转移方程:
\[f_{i,j}+|x_i-x_{i+1}|\rightarrow f_{i+1,j}
\]
\[\min\{f_{i,j}+|j-x{i+1}|\}\rightarrow f_{i+1,x_i}
\]
开三个线段树,维护 \(f_{i,j},f_{i,j}-j,f_{i,j}+j\) 即可。