P10964 Fence Obstacle Course
题目背景
与原题相比,$N$ 的数据范围调整为了 $1\leq N\leq 100000$,其他数据范围并无变化。
题目描述
农夫约翰为奶牛们建造了一条障碍赛道。赛道由一系列 $N$ 个长度不一的栅栏组成($1 \le N \le 100000$),每个栅栏都与 x 轴平行。栅栏 $i$ 的 y 坐标为 $i$。
FJ 的谷仓门位于原点(如下图中的 '`*`' 处)。赛道的起点位于坐标 ($S$,$N$)。
```
+--S--+-+-+
+--+--+--+
...
+--+--+-+
+--+-+-+
|==|==|==*=|=|=|
-3 -2 -1 0 1 2 3
```
FJ 原本的意图是让奶牛跳过栅栏,但奶牛更喜欢四蹄着地。因此,它们会沿着栅栏行走,当栅栏结束时,它们会转向 x 轴并继续直线行走,直到碰到另一个栅栏段或谷仓的侧面。然后它们决定向左或向右走,直到到达栅栏段的末端,依此类推,直到最终到达谷仓的侧面,然后可能经过短暂的步行,达到终点。
自然地,奶牛们希望尽可能少地行走。找出奶牛们从起点到谷仓门来回行走的最短距离。
输入格式
- 第 1 行:两个用空格分隔的整数:$N$ 和 $S$。($-100000 \le S \le 100000$)
- 第 2 行到第 $N+1$ 行:每行包含两个用空格分隔的整数:$A_i$ 和 $B_i$ ($-100000 \le A_i < B_i \le 100000$),分别表示栅栏段 $i$ 的起始和结束 x 坐标。第 2 行描述栅栏 #1;第 3 行描述栅栏 #2;依此类推。起始位置将满足 $A_N \le S \le B_N$。注意,栅栏将按照输入序列的逆序遍历。
输出格式
- 第 1 行:从起点到终点绕过栅栏所需的最小 x 方向来回距离。y 方向的距离不计入,因为它始终为 $N$。
说明/提示
(由 ChatGPT 4o 翻译)