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\) 即可。

posted @ 2024-09-18 14:49  FLY_lai  阅读(6)  评论(0编辑  收藏  举报